CloudTest er en backend-los variant av bugsystemet der alt kjorer i en Streamlit-app:
- En app:
unified_app.py - SQLite (standard lokalt) eller PostgreSQL + pgvector
- Vedlegg/lagring via backend-abstraksjon (
ATTACHMENT_STORAGE_BACKEND, defaultfilesystem) - Microsoft Entra via Streamlit OIDC (
st.login) - Soft-delete (papirkurv) med gjenoppretting i Admin
- Rolle-/policystyring for sletting og gjenåpning i Admin
Standard (cloud/minimal):
pip install -r .\CloudTest\requirements.txtValgfri lokal AI/OCR (tyngre pakker):
pip install -r .\CloudTest\requirements-optional-local-ai.txtpowershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1Starter med DATABASE_URL fra miljoet hvis satt, ellers lokal SQLite som standard, og skriver valgt DB-url ved oppstart.
Skriptet kjører også Alembic upgrade head automatisk før appstart.
Som standard kjøres nå også schema-verifisering, og migrering-fallback er deaktivert (cutover-modus).
Kortkommando:
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_apps.ps1Valgfri eksplisitt SQLite-profil:
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1 -UseSqliteFallbackDette setter CLOUD_TEST_ALLOW_SQLITE_FALLBACK=true for prosessen.
Valgfri dirty reindex ved oppstart:
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1 -ReindexDirtyOnStartHvis du kun vil starte appen uten migrering (f.eks. ren UI-testing):
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1 -SkipMigrationsHvis du vil hoppe over schema-verifisering:
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1 -SkipSchemaVerifyHvis du vil tillate legacy fallback midlertidig:
powershell -ExecutionPolicy Bypass -File .\CloudTest\start_cloud_test.ps1 -AllowMigrationFallback -EnableLegacySchemaBootstrapKjør migrering manuelt:
python .\CloudTest\scripts\db_maintenance.py --migrateVerifiser schema + migreringsstatus:
python .\CloudTest\scripts\db_verify.py --strictKjør dirty reindex manuelt:
python .\CloudTest\scripts\db_maintenance.py --reindex --dirty-onlyTekst-only reindex (uten nye embeddings):
python .\CloudTest\scripts\db_maintenance.py --reindex --dirty-only --without-embeddingspowershell -ExecutionPolicy Bypass -File .\CloudTest\stop_cloud_test.ps1- Unified app:
http://localhost:8601
Kjor smoke-test og compile-sjekk:
powershell -ExecutionPolicy Bypass -File .\CloudTest\run_hardening_checks.ps1Dette sjekker blant annet:
- Python compile av
unified_app.pyog stottefiler - Sentiment-mapping og symboler
- E-post normalisering/validering
- Duplikatdeteksjon
- Admin-filter parsing
- Backup/restore (SQLite): Opprett og last ned
.zipmed database + vedlegg, og restore ved behov. - Papirkurv: Sletting flytter bugs til papirkurv. Admin kan gjenopprette eller slette permanent.
- Ytelse: Side-render, søkelatens og AI-ventetid vises i driftspanel/sidebar.
Kjor rollebasert sjekkliste for Reporter/Assignee/Admin:
CloudTest/UI_REGRESSION_CHECKLIST.md- Logg resultat per kjoring i:
CloudTest/UI_REGRESSION_REPORT.md
Bruk CloudTest/secrets.toml.example som mal for .streamlit/secrets.toml.
Viktige felter:
[auth]
redirect_uri = "http://localhost:8601/oauth2callback"
cookie_secret = "long-random-secret"
[auth.microsoft]
client_id = "..."
client_secret = "..."
server_metadata_url = "https://login.microsoftonline.com/<TENANT_ID>/v2.0/.well-known/openid-configuration"For Streamlit Cloud må redirect_uri settes til:
https://<din-app>.streamlit.app/oauth2callback
Legg også inn DATABASE_URL i secrets for ekstern PostgreSQL.
Eksempel:
postgresql+psycopg://USER:PASSWORD@HOST:5432/DB_NAME?sslmode=require
ATTACHMENT_STORAGE_BACKEND kan settes, men filesystem er standard og brukes av CloudTest i dag.
CloudTest støtter både SQLite og PostgreSQL. For PostgreSQL brukes pgvector når extension er tilgjengelig.
Hvis PostgreSQL mangler vector-extension eller brukeren ikke har rettighet til CREATE EXTENSION, starter appen med tekst-basert fallback for embeddings.
- Ikke commit
CloudTest/.streamlit/secrets.toml. - Lokal fallback-login er av som standard i CloudTest (
CLOUD_TEST_ALLOW_LOCAL_LOGIN=false). - Hvis du aktiverer lokal fallback-login, sett et sterkt
DEFAULT_ADMIN_PASSWORD. - Roter
client_secretdersom det har blitt eksponert i lokal fil eller logg.