docs: update README with fund/ETF report feature (endpoints, layout, architecture)
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
64
README.md
64
README.md
@@ -5,12 +5,13 @@ Generatore di report PDF per certificati finanziari strutturati, sviluppato in A
|
||||
## Caratteristiche principali
|
||||
|
||||
- Generazione PDF multi-sezione da dati SQL Server
|
||||
- **Due template report**: certificati in quotazione (4 sezioni) e certificati non in quotazione / scaduti / rimborsati / revocati (3 sezioni) — rilevamento automatico dal campo `Stato`
|
||||
- **Pagina dividendi opzionale** (`?dividend=true`): pagina landscape con tabella Sottostanti+Dividendi a header raggruppati (SOTTOSTANTE / BARRIERE / DIVIDENDI), inserita dopo la Sezione 1
|
||||
- **Due template report certificati**: in quotazione (4 sezioni) e non in quotazione / scaduti / rimborsati / revocati (3 sezioni) — rilevamento automatico dal campo `Stato`
|
||||
- **Report ETF/Fondi**: 2 pagine — anagrafica con layout a 3 colonne (Dati Anagrafici, ESG Score, griglia Performance/Volatilità/RendRisk) + grafico storico prezzi
|
||||
- **Pagina dividendi opzionale** (`?dividend=true`): pagina landscape con tabella Sottostanti+Dividendi a header raggruppati
|
||||
- Grafico performance sottostanti (SkiaSharp → PNG in memoria)
|
||||
- Footer con branding opzionale e hyperlink cliccabile
|
||||
- Cache in memoria per ISIN già generati (chiavi separate per ogni combinazione di flag: suffissi `:branded`, `:dividend`, `:natixis` concatenati)
|
||||
- Endpoint per PDF inline, download, grafico standalone v1 e **grafico V2 con multi-formato e salvataggio su disco**
|
||||
- Cache in memoria per ISIN già generati (chiavi separate per ogni combinazione di flag)
|
||||
- Endpoint per PDF inline, download, grafico standalone v1, grafico V2 multi-formato e **grafico fondi**
|
||||
- Supporto Docker
|
||||
|
||||
## Stack tecnologico
|
||||
@@ -46,8 +47,18 @@ Generatore di report PDF per certificati finanziari strutturati, sviluppato in A
|
||||
|
||||
Il tipo di report viene selezionato automaticamente dall'orchestratore in base al campo `Stato` restituito dalla SP `rpt_Master_CFT_ISIN`.
|
||||
|
||||
### Report ETF/Fondi — 2 pagine
|
||||
|
||||
| Pagina | Contenuto |
|
||||
|--------|-----------|
|
||||
| **1 — Anagrafica** | Title bar con Tipo/Nome/ISIN; strip Rank+Prezzo+Data; 3 colonne: **Dati Anagrafici** (Società, Categoria MS, Valuta, Hedged, Benchmark, Spese, Catalogo, Proventi, Data lancio, Patrimonio) · **ESG Score** (Sustainability, Environmental, Social, Governance) · **Griglia Performance/Volatilità/RendRisk** (3M, 6M, YTD, 1Y, 3Y, 5Y) |
|
||||
| **2 — Grafico** | Storico prezzi close (linea singola, SkiaSharp), asse X con intervalli mensili adattivi |
|
||||
|
||||
SP: `sfih_GetOptDettagli` (anagrafica) · `sfih_GetChartPrices` (prezzi storici).
|
||||
|
||||
## API Endpoints
|
||||
|
||||
**Certificati:**
|
||||
```
|
||||
GET /api/report/by-isin/{ISIN} → PDF inline
|
||||
GET /api/report?p={isin_cifrato} → PDF inline (ISIN cifrato)
|
||||
@@ -56,10 +67,23 @@ GET /api/report/download?p={...} → PDF come allegato
|
||||
|
||||
GET /api/chart/{isin} → Grafico standalone v1 (PNG/PDF)
|
||||
GET /api/chart/v2/{isin} → Grafico standalone v2 (multi-formato, vedi sotto)
|
||||
```
|
||||
|
||||
**ETF/Fondi:**
|
||||
```
|
||||
GET /api/report/fund/by-isin/{ISIN} → PDF inline
|
||||
GET /api/report/fund?p={isin_cifrato} → PDF inline (ISIN cifrato)
|
||||
GET /api/report/fund?alias={id} → PDF inline (alias)
|
||||
GET /api/report/fund/download?p={...} → PDF come allegato
|
||||
|
||||
GET /api/chart/fund/{isin} → Grafico storico prezzi (PNG/JPEG/PDF)
|
||||
```
|
||||
|
||||
```
|
||||
GET /health → Health check DB + chart service
|
||||
```
|
||||
|
||||
Parametri opzionali accettati da tutti gli endpoint report:
|
||||
Parametri opzionali accettati da tutti gli endpoint report certificati:
|
||||
|
||||
| Parametro | Default | Effetto |
|
||||
|-----------|---------|---------|
|
||||
@@ -69,6 +93,23 @@ Parametri opzionali accettati da tutti gli endpoint report:
|
||||
|
||||
I parametri sono combinabili, es. `?branding=true÷nd=true&natixis=true`.
|
||||
|
||||
Parametri opzionali accettati dagli endpoint report **ETF/Fondi**:
|
||||
|
||||
| Parametro | Default | Effetto |
|
||||
|-----------|---------|---------|
|
||||
| `?branding=true` | `false` | Aggiunge footer "Powered by Smart Roots" con hyperlink |
|
||||
|
||||
### Grafico Fondi — parametri
|
||||
|
||||
```
|
||||
GET /api/chart/fund/{isin}[?format=png|jpg|jpeg|pdf&width=&height=&save=true]
|
||||
```
|
||||
|
||||
| Parametro | Valori | Effetto |
|
||||
|-----------|--------|---------|
|
||||
| `?format=` | `png` (default), `jpg`/`jpeg`, `pdf` | Formato output |
|
||||
| `?save=true` | — | Salva JPEG su disco (`ChartSettings:SavePath/{isin}_fund.jpg`) — solo per `jpg`/`jpeg` |
|
||||
|
||||
### Grafico V2 — parametri
|
||||
|
||||
```
|
||||
@@ -161,6 +202,19 @@ HTTP (ISIN) → ReportController → ReportOrchestrator
|
||||
HTTP (ISIN) → ChartController → /api/chart/v2/{isin}
|
||||
├── ChartDataServiceV2 (cedlab_Chart_UL1 + cedlab_Chart_AllSeriesV2)
|
||||
└── SkiaChartRendererV2 → PNG/JPEG/PDF → Response (+ salvataggio disco se ?save=true)
|
||||
|
||||
HTTP (ISIN) → FundReportController → /api/report/fund/
|
||||
├── FundDataService (sfih_GetOptDettagli + sfih_GetChartPrices)
|
||||
├── FundReportOrchestrator
|
||||
│ ├── FundAnagraficaRenderer → PdfDocument (Pagina 1: layout C)
|
||||
│ ├── FundChartSectionRenderer → PdfDocument (Pagina 2: grafico landscape)
|
||||
│ │ └── FundSkiaChartRenderer [static] → PNG in memoria
|
||||
│ └── PdfMergerService → byte[] → Response
|
||||
└── PdfCacheService (chiave fund:{isin}[:branded])
|
||||
|
||||
HTTP (ISIN) → FundChartController → /api/chart/fund/{isin}
|
||||
├── FundDataService (sfih_GetOptDettagli + sfih_GetChartPrices, in parallelo)
|
||||
└── FundSkiaChartRenderer [static] → PNG/JPEG/PDF → Response (+ salvataggio disco se ?save=true)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user