netgescon-day0/docs/support/OPERATORE-200-KB-PRODUZIONE-DEMO.md

201 lines
6.2 KiB
Markdown
Executable File

# Operatore .200 -> KB .53 -> Produzione/Demo
Documento operativo unico per la macchina `.200` usata da sviluppo e test.
## Ruoli macchina
- `.200` resta postazione di sviluppo e test: Laravel locale su `:8000`, staging locale su `:80/:443`.
- `192.168.0.157` (`svr-netgescon`) ospita la produzione Docker multisito: `www.netgescon.it`, `app.netgescon.it`, `demo.netgescon.it`.
- `192.168.0.53` ospita KB centrale e Gitea.
Regola fissa: gli aggiornamenti dei nodi remoti devono partire dall'interfaccia web `Supporto > Aggiornamento Nodo`, non da shell manuale sul nodo applicativo.
## Stato macchina operatore verificato
Verificato su `.200` il `2026-05-18`:
- VS Code presente: `code 1.119.0`
- `sshfs` presente
- Git presente
- chiave SSH macchina presente: `~/.ssh/id_ed25519_netgescon_machine`
- accesso SSH a `.53` funzionante
- orchestrator locale installato in `~/netgescon-orchestrator/.venv`
## Bootstrap locale per KB e share LAN
Script operativo:
- `scripts/ops/netgescon-client-kb-bootstrap.sh`
Comando standard:
```bash
bash scripts/ops/netgescon-client-kb-bootstrap.sh --install-orchestrator
```
Cosa prepara:
- mount SSHFS da `.53` in `~/mnt/netgescon-ssh`
- link workspace in `~/netgescon-sshfs-workspace`
- orchestrator locale in `~/netgescon-orchestrator/.venv`
- check health del KB su `http://192.168.0.53:3838`
Mount attesi:
- `~/mnt/netgescon-ssh/documenti`
- `~/mnt/netgescon-ssh/progetti`
- `~/mnt/netgescon-ssh/scambio`
Link workspace attesi:
- `~/netgescon-sshfs-workspace/documenti`
- `~/netgescon-sshfs-workspace/progetti`
- `~/netgescon-sshfs-workspace/scambio-200`
## Configurazione KB locale
Per rendere persistente l'accesso KB autenticato creare il file locale non versionato:
```bash
mkdir -p ~/.config/netgescon
cat > ~/.config/netgescon/kb.env <<'EOF'
export NETGESCON_KB_API_KEY=INSERISCI_API_KEY
export NETGESCON_KB_URL=http://192.168.0.53:3838
EOF
```
Gli script seguenti leggono automaticamente quel file se esiste:
- `scripts/ops/netgescon-client-kb-bootstrap.sh`
- `scripts/ops/netgescon-orchestrator-kb-run.sh`
Stato verificato il `2026-05-23` sulla `.200`:
- KB `.53` raggiungibile su `http://192.168.0.53:3838/api/v1/health`
- binary locale `~/netgescon-orchestrator/.venv/bin/agent-orchestrator` presente
- blocco residuo lato orchestrator/KB: `~/.config/netgescon/kb.env` non ancora creato, quindi le query KB autenticate non partono finche non viene inserita API key locale
## Invio backlog a orchestrator con contesto KB
Script operativo:
- `scripts/ops/netgescon-orchestrator-kb-run.sh`
Esempio:
```bash
bash scripts/ops/netgescon-orchestrator-kb-run.sh \
--backlog docs/support/WORKFLOW-KB-ORCHESTRATOR-PRODUTTIVO.md \
--query "aggiornamenti distribuzione" \
--query "demo netgescon" \
--mode analyze
```
Uso previsto:
- `.200` prepara backlog e contesto tecnico
- il KB su `.53` fornisce conoscenza condivisa
- l'altro agent opera sul nodo produzione seguendo il launcher web del nodo
## Produzione: punto di aggiornamento consentito
Pagina da usare sul nodo applicativo:
- `https://app.netgescon.it/admin-filament/supporto/aggiornamento-nodo`
- staging locale equivalente: `http://192.168.0.200:8000/admin-filament/supporto/aggiornamento-nodo`
Il launcher applicativo governa:
- sync Git/Gitea
- maintenance mode
- backup pre-update quando abilitato
- migrate, clear cache, rebuild view
- riapertura automatica del servizio
## Demo pronta per messa in linea
Nel compose multisito la demo usa gia:
- dominio `demo.netgescon.it`
- `RUN_SEEDERS=demo`
- seeder aggregato `Database\\Seeders\\DemoEnvironmentSeeder`
Il seeder demo richiama:
- `DemoUsersSeeder`
- `DocumentiDemoSeeder`
- `DemoTicketsSeeder`
Credenziali demo seedate:
- `superadmin@demo.netgescon.it / demo12345`
- `amministratore@demo.netgescon.it / demo12345`
- `collaboratore@demo.netgescon.it / demo12345`
- `condomino@demo.netgescon.it / demo12345`
- `inquilino@demo.netgescon.it / demo12345`
- `fornitore@demo.netgescon.it / demo12345`
Stato operativo verificato su `192.168.0.157` il `2026-05-23`:
- `https://demo.netgescon.it/admin-filament/login` risponde `200`
- `https://app.netgescon.it/admin-filament/login` risponde `200`
- il deploy multisito genera `APP_KEY` in `docker/.env.multisite` se manca
- il bootstrap demo ora carica utenti, ticket, documenti demo ed etichette protocollo sul DB demo esistente
- un controllo HTTP fatto troppo presto dopo `up -d` puo mostrare `502` per pochi secondi durante il warm-up iniziale dei container app
Pagina update demo dopo login:
- `/admin-filament/supporto/aggiornamento-nodo`
## Google Analytics da tenere nel KB
Misurazioni gia censite nel progetto:
- `DEMO` -> `G-26FSLQY2RL`
- `WWW` -> `G-3HH17HY982`
- `APP` -> `G-6P649ETW4F`
- `STAGING` -> `G-KF9PX1PQVG`
Percorso corretto lato Google:
- Google Analytics 4: `https://analytics.google.com/`
- Google Search Console: `https://search.google.com/search-console/`
Modello consigliato:
- una proprieta GA4 NetGescon
- tre data stream separati almeno per `APP`, `DEMO`, `STAGING`
Nota applicativa: il progetto ha gia una mappa host -> measurement id in `config/services.php` e il componente view `resources/views/components/google-analytics.blade.php` sceglie automaticamente l'ID giusto in base all'host o al site mode.
## Sorgente base per import dati da censire nel KB
Documento sorgente da riusare come base conoscitiva import:
- `docs/07-DATABASE-NETGESCON.md`
Punti chiave da promuovere nel KB:
- archivi legacy in `/mnt/gescon-archives/gescon` solo lettura
- staging tecnico MySQL `gescon_import` per normalizzazione
- mapping `generale_stabile.mdb -> anni -> nome_dir`
- tabelle import principali: `condomini_totali`, `tabelle`, `dett_tab`
## Comandi minimi di verifica
```bash
code --version
ssh -i ~/.ssh/id_ed25519_netgescon_machine michele@192.168.0.53 'hostname && whoami'
curl -fsS http://192.168.0.53:3838/api/v1/health
bash scripts/ops/netgescon-client-kb-bootstrap.sh
```
Per la demo/produzione pubblica:
```bash
curl -I -H 'Host: app.netgescon.it' http://195.110.133.78/admin-filament/login
curl -kI --resolve app.netgescon.it:443:195.110.133.78 https://app.netgescon.it/admin-filament/login
curl -I -H 'Host: demo.netgescon.it' http://195.110.133.78/admin-filament/login
curl -kI --resolve demo.netgescon.it:443:195.110.133.78 https://demo.netgescon.it/admin-filament/login
```