From 2a10a058b370924dfe49fdc4f2bb5bbee93059f9 Mon Sep 17 00:00:00 2001 From: SmartRootsSrl Date: Thu, 26 Mar 2026 11:03:25 +0100 Subject: [PATCH] docs: fix spec issues - DrawTitolo signature strategy, cache key expired path, showTip guard --- .../2026-03-26-memoria-natixis-design.md | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/docs/superpowers/specs/2026-03-26-memoria-natixis-design.md b/docs/superpowers/specs/2026-03-26-memoria-natixis-design.md index 519f260..09ed698 100644 --- a/docs/superpowers/specs/2026-03-26-memoria-natixis-design.md +++ b/docs/superpowers/specs/2026-03-26-memoria-natixis-design.md @@ -42,21 +42,33 @@ Il flag segue lo stesso pattern di `showBranding` e `showDividend`: 1. **`CertificateReportData`**: aggiungere `bool ShowNatixis { get; set; } = false;` 2. **`ReportController`**: aggiungere `[FromQuery(Name = "natixis")] bool showNatixis = false` a tutti e 3 gli endpoint (`GenerateReport`, `GenerateReportByIsin`, `DownloadReport`) e al metodo helper `GenerateAndReturnPdf`. 3. **`IReportOrchestrator` / `ReportOrchestrator.GenerateReportAsync`**: aggiungere parametro `bool showNatixis = false`, propagarlo in `CertificateReportData.ShowNatixis`. -4. **Renderer**: `AnagraficaSectionRenderer.DrawTitolo` e `ExpiredAnagraficaSectionRenderer.DrawTitolo` usano già `info.Categoria` per il box Tipologia — sostituire con `data.ShowNatixis ? info.Nome : info.Categoria`. +4. **Renderer — `DrawTitolo`**: i metodi privati `DrawTitolo` in entrambi i renderer hanno firma `(PdfGraphics g, CertificateInfo info, float w, float y)` e non ricevono `CertificateReportData`. La strategia adottata è **Option A**: aggiungere `bool showNatixis` come parametro aggiuntivo e aggiornare il sito di chiamata in `Render` passando `data.ShowNatixis`. + ```csharp + // firma aggiornata + private float DrawTitolo(PdfGraphics g, CertificateInfo info, float w, float y, bool showNatixis) + // call site in Render + y = DrawTitolo(g, info, PageW, y, data.ShowNatixis); + // uso interno + string tipologia = showNatixis ? info.Nome : info.Categoria; + ``` + Il guard di visibilità del box Tipologia va aggiornato di conseguenza: + ```csharp + bool showTip = !string.IsNullOrEmpty(showNatixis ? info.Nome : info.Categoria); + ``` + Questo evita che il box venga soppresso quando `natixis=true` ma `Categoria` è vuota. ### Cache (Approccio A — flag concatenati) -La chiave cache segue il pattern esistente: +La chiave cache segue il pattern esistente. Il suffisso `:natixis` si applica **sia al path base che al path expired** (`{isin}:expired`): -| Flags attivi | Chiave cache | -|------------------------|--------------------------| -| nessuno | `{isin}` | -| branding | `{isin}:branded` | -| natixis | `{isin}:natixis` | -| branding + natixis | `{isin}:branded:natixis` | -| dividend | `{isin}:dividend` | -| (combinazioni varie) | concatenazione ordinata | +| Flags attivi | Chiave base | Chiave expired | +|---------------------------------|--------------------------------|---------------------------------------| +| nessuno | `{isin}` | `{isin}:expired` | +| branding | `{isin}:branded` | `{isin}:expired:branded` | +| natixis | `{isin}:natixis` | `{isin}:expired:natixis` | +| branding + natixis | `{isin}:branded:natixis` | `{isin}:expired:branded:natixis` | +| dividend | `{isin}:dividend` | n/a (dividend solo per expired path) | -La logica di composizione della chiave cache va aggiornata in `ReportOrchestrator` per includere il suffisso `:natixis` quando `showNatixis == true`. +La logica in `ReportOrchestrator` aggiunge `:natixis` a entrambe le chiavi (base ed expired) quando `showNatixis == true`. ---