# Policlinico San Donato — setup workspace (nuova gestione) Guida operativa per collegare ThothII al DWH di PSD con il nuovo sistema (registry Git + descriptor v3 + `thothctl`). Lo stato attuale: - il repository PSD **è già stato ristrutturato** e committato localmente in `/Users/mp/projects/tht-workspace-psd` (layout P1.1: `thoth-workspaces.yaml` + `psd-clinical/workspace.yaml` + `psd-clinical/evidence/` + `psd-clinical/schema/annotations.yaml`); - la **validazione locale** del registry è già passata (descriptor v3 valido, 36 Evidence materializzate, 42 KB di annotations sincronizzate, docs generate). Rimangono i passi che richiedono segreti/accesso. I template pronti sono in `deploy/psd/` (`*.example`). ## 1. Pubblica il repository PSD su GitHub Crea un repository Git **privato** su GitHub e pubblicalo: ```bash git -C /Users/mp/projects/tht-workspace-psd remote add origin git -C /Users/mp/projects/tht-workspace-psd push -u origin main ``` Oppure fornisci URL + credenziali e lo pusho io. ## 2. Prepara i segreti (in `deploy/psd/secrets/`, non tracciati) | File | Contenuto | Riuso | | --- | --- | --- | | `psd-clinical-dwh-api-key` | la `X-API-Key` del DWH REST | `THT_DWH_API_KEY` esistente | | `psd-clinical-dwh-ca.pem` | CA interna (solo se il REST la presenta) | `THT_SSL_CA` esistente | | `pi-auth.json` | profilo Pi con le credenziali LLM (zai/deepseek/qwen) | esistente | | `thothii.secrets` | bundle secret dell'app | esistente | | `git-credentials` | credenziali HTTPS del remote Git privato | nuova | > **Nota CA**: il *preprocessing* DWH via REST supporta la CA (`TLS_CA_FILE`). Il *diagnostic* di > readiness REST, invece, rifiuta una CA per-request privata: se il ping fallisce per la CA, va > reso trusted a runtime oppure si adatta `diagnostics.dwh_rest` nel descriptor Git. ## 3. Compila i file operatore (dai template) ```bash cd deploy/psd cp workspace-bindings.env.example workspace-bindings.env cp operator.env.example operator.env cp thothii-installation.yaml.example thothii-installation.yaml ``` Compila i placeholder con i valori reali (remote GitHub, path assoluti). Il bindings file per PSD è: ```dotenv THT_WS_PSD_CLINICAL_DWH_TRANSPORT=rest_api THT_WS_PSD_CLINICAL_DWH_BASE_URL=https://supabase-aritmolab.policlinicosandonato.it/dwh/ THT_WS_PSD_CLINICAL_DWH_API_KEY_FILE=/run/secrets/psd-clinical-dwh-api-key ``` ## 4. Genera il connector override ```bash scripts/generate-connector-secrets-override.sh --bindings-env deploy/psd/workspace-bindings.env --operator-env deploy/psd/operator.env --output deploy/psd/connector-secrets.yaml --service workspace-maintenance --role all ``` ## 5. Avvia lo stack (VPN attiva; internet per scaricare il modello) ```bash scripts/compose-with-preflight.sh --env-file deploy/psd/operator.env -f compose.yaml -f deploy/compose.local.yaml -f deploy/compose.git-https.yaml -f deploy/psd/connector-secrets.yaml up --build -d ``` Il primo avvio esegue `embedding-model-init`, che scarica `qwen3-embedding:0.6b` nel volume `embedding-models` e poi sblocca `core`. ## 6. Attiva e valida il workspace ```bash curl --fail --silent http://127.0.0.1:8787/health thothctl --installation deploy/psd/thothii-installation.yaml workspace inspect --workspace psd-clinical --json ``` ## 7. Preprocessing (DWH → FK → schema → Evidence) ```bash thothctl --installation deploy/psd/thothii-installation.yaml workspace preprocess run --workspace psd-clinical --json ``` Se il run si ferma per la revisione delle join (`manual_review_required`): ```bash # il curatore rivede i candidati e pubblica psd-clinical/schema/annotations.yaml (commit+push), # poi l'installazione fa pull, e si esegue: thothctl --installation deploy/psd/thothii-installation.yaml workspace schema accept --workspace psd-clinical --run --yes --json thothctl --installation deploy/psd/thothii-installation.yaml workspace preprocess run --workspace psd-clinical --resume --json ``` ## 8. Testa una domanda reale Apri l'app (`http://localhost:5173`), seleziona `psd-clinical` e crea una sessione con una domanda in linguaggio naturale. Segui le 8 fasi e conferma ai gate fino all'SQL finale. ## Cosa serve ancora da te 1. **URL + credenziali del repo GitHub** del workspace PSD (passo 1). 2. **X-API-Key DWH** (+ CA, se serve) riusabili dall'ambiente attuale (passo 2). 3. Conferma del **provider/modello LLM** di default (`zai/glm-5.2` è già impostato nel descriptor). 4. Conferma dell'**endpoint ping** REST del DWH (`POST /rpc/ping` con `X-API-Key`) per il `diagnostics.dwh_rest` del descriptor. Con questi quattro elementi completiamo i passi 2–4 insieme e lanciamo lo smoke live.