docs: update README and DOCS with ?dividend=true feature

- Document ?dividend=true parameter in all report endpoints
- Add DividendSectionRenderer to architecture diagrams and file structure
- Update Struttura del report sections (Sezione 1b optional)
- Document 4-key cache combinations (base/branded/dividend/branded+dividend)
- Add 2026-03-23 changelog entries in DOCS.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-23 17:38:48 +01:00
parent b3cf03e3d4
commit 8c3a900a9c
2 changed files with 50 additions and 17 deletions

View File

@@ -27,7 +27,8 @@ ReportOrchestrator
│ ├── rpt_Events_CFT_ISIN → Eventi
│ └── rpt_AnalisiScenario_ISIN → Analisi scenario
├──→ AnagraficaSectionRenderer → PDF Sezione 1
├──→ AnagraficaSectionRenderer → PDF Sezione 1 (tabella sottostanti omessa se showDividend=true)
├──→ DividendSectionRenderer → PDF Sezione 1b (solo se showDividend=true, landscape A4)
├──→ EventiSectionRenderer → PDF Sezione 2
├──→ ScenarioSectionRenderer → PDF Sezione 3 (se dati presenti)
@@ -72,14 +73,16 @@ SmartReports/ ← Solution
│ └── Implementations/
│ ├── CertificateDataService.cs ← Accesso DB: anagrafica, eventi, scenario
│ ├── ChartDataService.cs ← Accesso DB: dati grafico (3 SP)
│ ├── AnagraficaSectionRenderer.cs ← Sezione 1: anagrafica + sottostanti
│ ├── EventiSectionRenderer.cs ← Sezione 2: tabella eventi (multi-pagina)
│ ├── ScenarioSectionRenderer.cs ← Sezione 3: matrice scenario con gradiente
│ ├── ChartSectionRenderer.cs ← Sezione 4: inserisce chart PNG nel PDF
│ ├── SkiaChartRenderer.cs ← Genera il grafico con SkiaSharp
│ ├── PdfMergerService.cs ← Merge PDF con Syncfusion
│ ├── PdfCacheService.cs ← Cache in memoria (IMemoryCache)
── ReportOrchestrator.cs ← Coordinatore principale
│ ├── AnagraficaSectionRenderer.cs ← Sezione 1: anagrafica + sottostanti (in quotazione)
│ ├── ExpiredAnagraficaSectionRenderer.cs ← Sezione 1: anagrafica + sottostanti (scaduti)
│ ├── DividendSectionRenderer.cs ← Sezione 1b: tabella Sottostanti+Dividendi landscape (opzionale)
│ ├── EventiSectionRenderer.cs ← Sezione 2: tabella eventi (multi-pagina)
│ ├── ScenarioSectionRenderer.cs ← Sezione 3: matrice scenario con gradiente
│ ├── ChartSectionRenderer.cs ← Sezione 4: inserisce chart PNG nel PDF
│ ├── SkiaChartRenderer.cs Genera il grafico con SkiaSharp
── PdfMergerService.cs ← Merge PDF con Syncfusion
│ ├── PdfCacheService.cs ← Cache in memoria (IMemoryCache)
│ └── ReportOrchestrator.cs ← Coordinatore principale
├── Program.cs ← Entry point, DI, middleware
├── GlobalUsings.cs ← Using globali
@@ -156,6 +159,15 @@ GET /api/report/download?p={isin_cifrato}
GET /api/report/download?alias={alias_id}
```
### Parametri opzionali (tutti gli endpoint report)
| Parametro | Default | Effetto |
|-----------|---------|---------|
| `?branding=true` | `false` | Aggiunge footer "Powered by Smart Roots" con hyperlink cliccabile |
| `?dividend=true` | `false` | Inserisce pagina landscape Sottostanti+Dividendi dopo la Sezione 1; omette la tabella sottostanti dalla Sezione 1 |
I parametri sono combinabili: `?branding=true&dividend=true`. La cache usa 4 chiavi distinte: `{isin}`, `{isin}:branded`, `{isin}:dividend`, `{isin}:branded:dividend`.
### Grafico standalone (richiamabile da altri progetti)
```
@@ -238,6 +250,8 @@ Tutti i servizi sono registrati in `Program.cs`:
- `ICertificateDataService``CertificateDataService` (Scoped)
- `IChartDataService``ChartDataService` (Scoped)
- `IPdfSectionRenderer` → registrati multipli: `Anagrafica`, `Eventi`, `Scenario` (Scoped)
- `ExpiredAnagraficaSectionRenderer` (Scoped, iniettata direttamente nell'orchestratore — senza interfaccia)
- `DividendSectionRenderer` (Scoped, iniettata direttamente nell'orchestratore — senza interfaccia)
- `IChartSectionRenderer``ChartSectionRenderer` (Scoped)
- `IPdfMergerService``PdfMergerService` (Scoped)
- `IReportOrchestrator``ReportOrchestrator` (Scoped)
@@ -424,3 +438,10 @@ Ogni step del flusso è loggato:
| 18/03/2026 | Rimozione colonne Trigger Capitale e Valore Capitale dalla tabella eventi |
| 18/03/2026 | Fix bordi tabelle: `PdfTheme.ApplyThinBorders()` con linee 0.25pt |
| 18/03/2026 | Fix SkiaSharp: migrazione a API moderna `SKFont` (rimozione warning obsoleti) |
| 23/03/2026 | Aggiunto parametro `?dividend=true` su tutti gli endpoint report |
| 23/03/2026 | Aggiunto `DividendSectionRenderer`: pagina landscape con tabella Sottostanti+Dividendi (header raggruppati SOTTOSTANTE / BARRIERE / DIVIDENDI) |
| 23/03/2026 | Quando `dividend=true`: tabella Sottostanti omessa dalla Sezione 1 (entrambi i flussi attivo/expired) |
| 23/03/2026 | Cache aggiornata a 4 chiavi: `{isin}`, `{isin}:branded`, `{isin}:dividend`, `{isin}:branded:dividend` |
| 23/03/2026 | Label italianizzate uniformemente: Strike→Livello Iniziale, Buffer→Protezione, Trigger→Livello (Cedola/Richiamo Anticipato), IRR→Tasso Rendimento Interno |
| 23/03/2026 | Stile titoli sezioni uniformato (DrawSectionLabel): barra blu 3pt + testo AccentBlue su bianco (Events, Scenario, Dividend) |
| 23/03/2026 | Font tabelle Sottostanti allineati a EventiSectionRenderer: `PdfTheme.Header` per header, `PdfTheme.Small` per dati |