Implement approved specification #32 and tickets #33-#37. Keep host authentication server-verified and pin session interaction language. Compile scoped base selectors for browser compatibility and retain full gutters during CSS pruning.
92 lines
4.6 KiB
Markdown
92 lines
4.6 KiB
Markdown
# Piano — Full shell e integrazione con il portale
|
|
|
|
Stato: implementazione completata e installata sul Mac; deploy server non eseguito.
|
|
|
|
Esiti e limiti del collaudo: [rapporto di verifica](../reports/2026-09-13-full-shell-implementation.md).
|
|
|
|
Specifica consolidata: [Full shell, integrazione Omics e interfaccia bilingue](2026-09-13-full-shell-spec.md),
|
|
pubblicata come [specifica su Gitea](https://git.tylconsulting.it/mptyl/ThothII/issues/32).
|
|
Ticket approvati: [Full sul Mac](https://git.tylconsulting.it/mptyl/ThothII/issues/33),
|
|
[Embedded Omics](https://git.tylconsulting.it/mptyl/ThothII/issues/34),
|
|
[Sessioni bilingui](https://git.tylconsulting.it/mptyl/ThothII/issues/35),
|
|
[Traduzione completa](https://git.tylconsulting.it/mptyl/ThothII/issues/36),
|
|
[Consegna verificata](https://git.tylconsulting.it/mptyl/ThothII/issues/37).
|
|
Le dipendenze sono registrate anche nativamente sul tracker.
|
|
|
|
## Obiettivo
|
|
|
|
Aggiungere una shell autonoma `full` mantenendo compatibile l'integrazione corrente `embedded`
|
|
con Omics Portal. La complessità del portale deve restare confinata a un `PortalAdapter`.
|
|
|
|
## Regole definitive
|
|
|
|
- `embedded` è il default e non renderizza alcun header ThothII.
|
|
- La configurazione installata su questo Mac imposta `shell.mode: full` e
|
|
`shell.defaultLocale: en`.
|
|
- Il deploy server imposta `shell.mode: embedded` e `shell.adapter: omics-portal`.
|
|
- `full` renderizza header, rail sinistro vuoto di almeno 20 px e logout locale.
|
|
- Fullscreen è uno stato separato dalla shell: il pulsante entra/esce dalla Fullscreen API e
|
|
l'icona riflette anche l'uscita con `Esc`.
|
|
- Full include lingua, tema `light/dark`, fullscreen e nome utente; non include la rotellina
|
|
amministrativa.
|
|
- Embedded riceve dal portale solo `locale`, `theme` e `fullscreen`; il server verifica l'accesso.
|
|
- Login e logout embedded restano responsabilità di Omics Portal.
|
|
- La lingua UI è separata dalla lingua di interazione fissata nella sessione.
|
|
|
|
## Sequenza di implementazione
|
|
|
|
### 1. Configurazione e stato shell
|
|
|
|
- Aggiungere `shell.mode`, `shell.defaultLocale` e `shell.adapter` al descrittore di
|
|
installazione, mantenendo `embedded` come default quando `shell` non è presente.
|
|
- Proiettare nel runtime frontend solo configurazione non segreta.
|
|
- Centralizzare lo stato shell in un controller; i componenti non devono leggere direttamente
|
|
il portale.
|
|
|
|
### 2. Adapter e bridge Omics
|
|
|
|
- Implementare `PortalAdapter` con la sola API `subscribe`.
|
|
- Implementare `OmicsPortalAdapter` osservando il documento condiviso, secondo il contratto rivisto.
|
|
- Leggere il locale dal selettore renderizzato da Django, osservare il tema e ascoltare il fullscreen.
|
|
- Conservare il cambio lingua tramite reload Omics e il percorso server di autenticazione esistente.
|
|
- Validare snapshot e cleanup; in caso di errore mostrare un messaggio di integrazione in
|
|
embedded, senza fallback a controlli locali.
|
|
|
|
### 3. i18n e lingua del modello
|
|
|
|
- Introdurre cataloghi UI estendibili, inizialmente `it` e `en`, con fallback inglese.
|
|
- Usare il locale corrente per le nuove sessioni.
|
|
- Persistire nel manifest la lingua di interazione e usarla per domande, spiegazioni e scelte
|
|
del revisore; una ripresa conserva quella lingua.
|
|
- Non tradurre SQL, identificatori o contenuti del workspace.
|
|
|
|
### 4. Shell full
|
|
|
|
- Renderizzare header solo in `full`.
|
|
- Collegare selettore lingua, tema, fullscreen, nome utente e logout alle funzioni già esistenti
|
|
o equivalenti del frontend/backend.
|
|
- Implementare il cambio icona e la sincronizzazione con `fullscreenchange`.
|
|
- Applicare il rail sinistro vuoto con larghezza base semplice e non inferiore a 20 px.
|
|
|
|
### 5. Verifica
|
|
|
|
- Unit test per validazione adapter, cambio stato, fallback locale e regole di sessione.
|
|
- Test frontend per entrambe le shell, logout full e fullscreen con `Esc`.
|
|
- Test backend per il passaggio della lingua nelle nuove sessioni e la conservazione in resume.
|
|
- Test di integrazione Omics per preferenze iniziali, tema, fullscreen, locale dopo reload e accesso.
|
|
- Build frontend/backend, suite harness e build documentale.
|
|
|
|
## Fuori ambito
|
|
|
|
- Cambiare il proxy/authentication chain già operativo.
|
|
- Passare a iframe o introdurre `postMessage`.
|
|
- Trasferire token o oggetti utente nel browser bridge.
|
|
- Aggiungere una shell `system` per il tema o un terzo tema.
|
|
- Implementare un adapter per un secondo portale: deve solo essere possibile sostituire quello
|
|
Omics tramite la stessa interfaccia.
|
|
|
|
## Gate di approvazione
|
|
|
|
L'implementazione è approvabile quando il codice rispetta il [contratto v1](../contracts/portal-shell-adapter-v1.md),
|
|
la modalità embedded non mostra header proprio e la modalità full non dipende da Omics Portal.
|