From 9d8acbae6b0e14f128d3972d009059d11478085d Mon Sep 17 00:00:00 2001 From: SmartRootsSrl Date: Mon, 8 Jun 2026 18:19:22 +0200 Subject: [PATCH] docs: update README with fund/ETF report feature (endpoints, layout, architecture) Co-Authored-By: Claude Sonnet 4.6 (1M context) --- README.md | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7584ec7..1d50232 100644 --- a/README.md +++ b/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) ``` ---