Matrice Allineamento Compila V3 / Easy Builder / Legacy - 2026-08-02¶
Obiettivo¶
Compila V3 deve diventare il runtime principale per RAS, costruito su Easy Builder e compatibile con i dati storici del Compila legacy. Compila V2 non e' piu' una direzione di prodotto: resta solo fallback temporaneo finche' V3 non copre i blocchi critici.
Stato Sintetico¶
| Area | Stato V3 | Note |
|---|---|---|
| Architettura modulare | OK | JS separati per API, app, render, editor, media, preset, map, AI, markup. Nessun nuovo monolite. |
| Lettura modello Easy Builder | OK | Sezioni, domande, label, help, meta, required, choices, detail_fields, document_check. |
| Salvataggio risposte | OK | Endpoint V3 dedicato, validazione qid modello, errori visibili in UI. |
| Tipi campo base | OK | text, textarea, email, number/numeric/integer/float/decimal, date, checkbox. |
| Scelte Easy Builder | OK | choices/options lette da field/config/meta, strict choices rispettate in UI e backend. |
| Campi obbligatori | OK | required/obbligatoria/meta.required allineati e blocco locale su vuoto. |
| Foto domanda | OK | Limite 4 foto per domanda, identita' key+questionId+photoOrdinal, thumb, parcheggio, cestino. |
| Foto telefono/QR | OK | Upload da companion, note foto, parcheggio e riallineamento. |
| GPS/posizione | Parziale | Evidenza posizione e modale OSM presenti. Mancano test browser reali e politica finale su obbligatorieta' posizione. |
| Annotazioni foto legacy-like | Parziale avanzato | Cerchi, frecce, testo, NC alto-destra, slider, preview, undo/reset, salvataggio copia annotata. Mancano strumenti legacy minori e test visuali browser. |
| AI foto | Parziale | Analisi, correzione tecnico, copia esito/evidenza. Da governare permessi per tecnico specifico e qualita' suggerimenti. |
| Document check | Parziale avanzato | Stato live, category_id/category_name, riepilogo, esiti manuali. Mancano upload/collegamento documento direttamente dalla domanda V3. |
| NC RAS | Parziale | Sync backend su risposta RAS presente. Da verificare flusso completo apertura/risoluzione/chiusura e UI dedicata. |
| Stampa RAS | Parziale | Motore esterno preservato, pulsanti PDF presenti. Da validare output verticale RAS V2/legacy e mapping payload completo. |
| Compatibilita' legacy question id | OK | legacy_question_id resta nel payload ma non viene mostrato al tecnico. |
| Compatibilita' dati storici foto | OK | Record legacy senza photoOrdinal ancora supportati. |
| V2 retirement | Non pronto | V2 cestinabile come roadmap, ma non ancora rimovibile da produzione. |
Copertura Easy Builder¶
Contratto Campi Legacy / Easy Builder / V3¶
Questa e' la matrice operativa per evitare fork tra Easy Builder, legacy Compila e runtime V3. Ogni campo deve essere valutato su quattro passaggi: definizione modello, render V3, salvataggio V3, effetto su stampa/NC/documentale.
| Famiglia campo | Fonte Easy Builder / legacy | V3 oggi | Gap operativo | Prossimo intervento |
|---|---|---|---|---|
| Risposta singola RAS | type=select, choices, question_mode=si_no_in_attesa |
OK: select, strict choices, default Si/No/In attesa |
Nessuno bloccante | Tenere test su scelte da field/config/meta. |
| Risposta booleana | type=boolean/bool, legacy si/no |
OK: resa come choice Si/No |
Valutare se legacy usa anche 1/0 in stampa |
Aggiungere caso di compatibilita' stampa se emerge da payload reale. |
| Testo breve | type=text/email |
OK: input testo/email | Mancano placeholder, maxlength, suffix/prefix in campo principale |
Portare attributi Easy Builder anche sul controllo principale. |
| Testo lungo | type=textarea/long_text |
OK: textarea | Righe/placeholder non sempre lette dal meta principale | Allineare rows, placeholder, maxlength. |
| Numero/importo | type=number/numeric/integer/float/decimal |
OK: input number | step, min, max, suffix non completi sul campo principale |
Riutilizzare detailControlAttrs anche per field principale. |
| Data | type=date |
OK | Verificare formato legacy/stampa | Test payload stampa con data. |
| Checkbox | type=checkbox |
OK: salva 1 o vuoto |
Semantica stampa da confermare | Mappare label finale in payload stampa. |
| Multiselect | type=multiselect/multi/tags nei preset DUVRI |
OK base: campo principale multi-select e validazione per singolo valore | Da verificare stampa/DUVRI reale | Testare su payload Easy Builder reale prima di estendere a DUVRI. |
| Supplier lookup | type=supplier_lookup DUVRI |
Mancante in V3 RAS | Non bloccante RAS, ma blocca riuso runtime per DUVRI | Tenere fuori dal P0 RAS, schedulare dopo parita' RAS. |
| Detail fields generici | meta.detail_fields |
OK per text, textarea, select, number, date, checkbox | File/image filtrati; attributi avanzati parziali | Separare allegati da foto e completare attributi. |
Detail fields In attesa |
meta.in_attesa_detail_fields |
OK: switch su valore In attesa |
Condizionali diversi da In attesa mancanti |
Definire piccolo motore condizionale Easy Builder. |
| Foto domanda | Legacy immagini + Easy Builder detail_fields.image |
OK bridge: detail_fields.image abilita il blocco Foto domanda, porta required, max, accept e avviso mancante |
Da validare su browser reale con modello Easy Builder | Test manuale su domanda con immagine obbligatoria e stampa payload. |
| Document check | question_mode=document_check, meta.document_check |
Parziale avanzato: stato live e risposta manuale | Manca upload/associazione documento dalla domanda | Prossimo blocco dopo campi base. |
| NC/Rischio | Legacy detail aliases, rischio 1/2/3/4/6/9 |
Parziale: sync NC e fallback locali | Fallback rischio/categoria nel JS V3, non governati da Easy Builder/tabelle | Spostare configurazione rischio/categorie in metadati/tabelle e usare fallback solo se assente. |
| AI foto | Foto server + contesto domanda | Parziale: suggerisce/corregge e prepara nota/esito | Permessi per tecnici specifici e audit correzione da completare | Dopo consolidamento foto/campo. |
| Posizione GPS | Foto/campo operativo | Parziale: verifica e mappa | Policy obbligatorieta' non decisa | Definire regola per RAS certificato sul posto. |
Gate Per Dire "Campo Allineato"¶
Un campo e' allineato solo se:
- Easy Builder lo puo' definire senza metadati duplicati in V3.
- V3 lo legge da
field,configometasenza fallback hardcoded come fonte primaria. - V3 lo rende correttamente su tablet e desktop.
- V3 salva nello stesso
legacy_dynamic_answer.valore_jsonusato da legacy/stampa. - La validazione backend accetta solo valori coerenti col modello.
- Se il campo incide su NC, stampa o documentale, il relativo effetto e' verificato.
Primo Gap Chiuso¶
Il primo intervento tecnico e' stato chiuso: campi principali con attributi Easy
Builder essenziali (placeholder, min, max, step, maxlength, rows) e
campo principale multiselect con salvataggio array e validazione backend per
singolo valore.
Il bridge per detail_fields.image e' stato chiuso: V3 non crea una seconda UI
upload dentro Compila, ma usa il blocco Foto domanda come implementazione ufficiale
del campo immagine Easy Builder.
Coperto¶
field.type:text,textarea,long_text,email,number,numeric,integer,float,decimal,date,checkbox,boolean,select,radio,enum,dropdown,combo,multiselect,multi_select,multi,tags,document_check.choices/options: lette dafield,field.config,field.meta.required: letto darequired,obbligatoria,meta.required.detail_fields: render e salvataggio per testo, textarea, select/options, number, date, checkbox/boolean.in_attesa_detail_fields: switch automatico quando il valore e'In attesa.document_check: stato live da endpoint documentale e scelta manuale.question_mode: usato per preset risposta e opzioni defaultsi/no/in attesa.description/help/hint: mostrati come aiuto domanda.
Parziale¶
detail_fieldsdi tipofile,image,photo,picture: per immagini/foto sono gestiti tramite bridge verso il blocco Foto domanda. Allegati non fotografici restano fuori dal bridge.document_check.allow_manual_override: letto nel riepilogo se presente nel payload, ma non c'e' ancora una UI dedicata per impostarlo come override formale.document_check.match_scope: l'endpoint attuale lavora su tenant/cliente. Serve verificare se tutti gli scope legacy sono equivalenti.conditional_document_check: presente nei preset Easy Builder, non ancora eseguito come regola runtime V3 completa.- campi condizionali generici: non ancora una matrice runtime completa.
Mancante¶
- motore condizionale completo Easy Builder lato V3.
- upload documento direttamente dalla domanda
document_check. - gestione allegati non fotografici dentro domanda.
- audit per singola regola Easy Builder: visibile, salvata, stampata, sincronizzata NC.
- test automatico su browser autenticato con screenshot mobile/desktop.
Copertura Legacy Compila¶
Coperto o equivalente¶
- domande con numerazione e label pulite.
- risposta e note operative.
- foto per domanda, cestino, parcheggio, ripristino.
- annotazioni principali: NC, cerchi, frecce, testo, undo/reset.
- compatibilita' record storici foto senza
photoOrdinal. - pulsanti verso V2/legacy ancora disponibili come fallback.
- generazione/apertura PDF tramite motore esterno, senza incorporare il motore in V3.
Parziale¶
- flusso NC completo legacy: apertura automatica c'e', ma serve test end-to-end su modifica risposta, revisione, risoluzione e stampa.
- stampa verticale RAS legacy/V2: serve audit payload e confronto PDF.
- documenti richiesti legacy: V3 legge e mostra stato, ma non fa ancora tutto il ciclo upload/associazione/override dalla domanda.
- annotazioni: strumenti principali presenti, ma il legacy va confrontato strumento per strumento per evitare regressioni operative.
Mancante o da decidere¶
- regole legacy speciali per sezioni/domande non ancora censite in matrice.
- eventuali automazioni legacy legate a chiusura intervento/RAS.
- policy finale: quando una posizione GPS e' obbligatoria per certificare presenza.
Cosa Blocca Il Cestino Di V2¶
V2 puo' essere considerato dismesso solo dopo questi gate:
- Stampa RAS verticale validata su documento reale e confrontata con output legacy/V2.
- Flusso NC completo verificato: risposta NC, apertura NC, modifica risposta OK, risoluzione/coerenza stato, stampa.
- Document check completo: stato live, risposta manuale, upload/associazione documento, override, stampa.
- Condizionali Easy Builder minimi: almeno
in_attesa, document check condizionale, visibilita' campi/dettagli. - Test browser autenticato mobile e desktop su documento demo pulito.
- Piano migrazione dati/fallback: cosa succede ai record V2 esistenti e ai link gia' mandati ai tecnici.
Priorita' Prossime¶
| Priorita' | Lavoro | Motivo |
|---|---|---|
| P0 | Audit stampa RAS V3 vs legacy/V2 | Senza stampa validata non si puo' togliere V2. |
| P0 | Matrice campi speciali legacy reali | Serve sapere esattamente cosa manca, non a sensazione. |
| P1 | Document check upload/associazione dalla domanda | E' il pezzo documentale piu' operativo. |
| P1 | Flusso NC end-to-end | RAS senza NC affidabile non e' completo. |
| P1 | Condizionali Easy Builder runtime | Necessario per modelli reali non lineari. |
| P2 | Test visuali Playwright autenticati | Serve stabilizzare mobile, thumb, modali, markup. |
| P2 | Pulizia documento demo 7176 o clone baseline | I dati di test attuali sono misti e possono falsare verifiche. |
Decisione Operativa¶
- Continuare sviluppo solo su V3.
- Non aggiungere nuove feature a V2.
- Tenere V2 accessibile come fallback finche' i gate P0 non sono chiusi.
- Usare legacy come specifica funzionale, non come base architetturale.
- Aggiornare questa matrice ad ogni blocco completato.