BFLOWS
a3f863ecdb
feat(verbale): logo Gepafin SVG ufficiale nel verbale PDF
...
Carlo ha fornito il logo Gepafin ufficiale (SVG vettoriale, colore #4A644E verde
istituzionale, 118x50 viewbox). Sostituito il placeholder testuale
<span class="hdr__logo">GEPAFIN</span> con il logo reale.
Implementazione:
- app/static/gepafin-logo.svg — logo copiato dal repo FE Gepafin (8.7KB SVG)
- verbale.py: aggiunto STATIC_DIR + LOGO_FILE_URL con path file:// assoluto
(weasyprint risolve file:// localmente senza HTTP fetch)
- template passa logo_path nel contesto Jinja
- verbale_istruttoria.html: CSS .hdr__logo-img (altezza 38pt) sostituisce
.hdr__logo testuale
Verificato: PDF da 23KB -> 32KB (incluso SVG), XObject embedded OK,
header PDF-1.7 valido.
Nel PDF il logo appare in alto a destra dell'header accanto al sottotitolo
'Finanziaria regionale dell\'Umbria'.
2026-04-18 22:15:24 +02:00
BFLOWS
3021792c31
feat(v2): verbale istruttoria PDF con tranche N/M + custom_checks + 5 voci Cecilia + storico
...
B6 routers/verbale.py:
- _build_context arricchito con custom_checks_merged (schema+values da RemissionCustomCheckValue)
- previous_tranches: elenco tranche APPROVED precedenti con cumulative progressivo
- max_tranches_snapshot letto dallo schema_snapshot.gate_rules.max_tranches
- filename include _t{sequence_number}.pdf
B6 templates_jinja/verbale_istruttoria.html:
- Header: 'Tranche N/M' + period_label dopo numero pratica
- Meta-grid: riga 'Tranche / fase' quando max_tranches > 1
- Nuova sezione 'Controlli aggiuntivi' (dopo verifica documenti):
tabella label, obbligatorio, dichiarato SI/NO, doc allegato SI/NO, validazione, note
- Sezione 'Storico tranches precedenti' (solo se sequence > 1):
tabella con cumulativo progressivo
- Box totali riscritto con **5 VOCI UFFICIALI CECILIA**:
(1) Importo massimo ammissibile (cap globale) + gia approvato tranche precedenti
(2) Richiesto pre-controllo = pre_check_admissible
(3) Ammesso post-controllo = remission_due
(4) Importo finanziamento erogato + tranches count/max
(5) Residuo da restituire = erogato - approvato_prec - ammesso
- Box 'REMISSIONE APPROVATA PER QUESTA TRANCHE' evidenziato quando APPROVED
Test E2E: verbale T1 APPROVED 29.3KB con tutte sezioni presenti.
Verbale T2 simulata con storico T1 e cap tranche 2 correttamente calcolato.
2026-04-18 17:53:04 +02:00
BFLOWS
23a2b525a4
feat(verbale): export PDF verbale istruttoria via weasyprint
...
- Dockerfile: dipendenze sistema libpango/libgdk-pixbuf/libcairo/shared-mime-info +
fonts-dejavu per rendering WeasyPrint su debian slim
- requirements: weasyprint==61.2 + pydyf==0.10.0 (vincolo compatibilita,
weasyprint 62.x ha bug con pydyf 0.11 su stream.transform) + jinja2==3.1.3
- templates_jinja/verbale_istruttoria.html: layout A4 professionale con
intestazione Gepafin, dati pratica, tabelle fatture raggruppate per categoria
(dichiarato vs ammesso con motivazione rettifica), ULA, documenti,
soccorsi istruttori, totali, checklist finale, note istruttore, blocco firma
- routers/verbale: endpoint /verbale.html (debug preview) e /verbale.pdf
(weasyprint on-the-fly) — solo ruoli istruttore/superadmin
- main: include router verbale, version bump 0.3.0
Testato E2E: PDF 27KB generato su pratica UNDER_REVIEW, magic bytes PDF-1.7 OK.
2026-04-18 16:54:35 +02:00