feat: add ?years= param to underlying-only chart endpoint

Endpoint standalone /api/chart/underlying/{id} caricava un TOP 350
fisso; ora accetta ?years= (default 5, clamp 1-20) e la SP filtra per
data invece che per numero di righe.

Il prezzo usato resta Px_close/Px_closeadj in base ad
AdjustedPrices, senza fallback incrociato tra i due campi: quando
Px_closeadj non è backfillato prima di uno split (es. Apple, valorizzato
solo da inizio 2019), un fallback avrebbe mischiato dati adjusted/raw
creando un gradino artificiale nel grafico. La SP ora taglia lo storico
dove il campo scelto non è popolato.

Fix collaterale: skip righe con prezzo NULL prima del cast a decimal,
evitava un InvalidCastException con storici lunghi.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 17:54:25 +02:00
parent d59f5a0faa
commit e36ef3fe47
4 changed files with 35 additions and 25 deletions

View File

@@ -127,7 +127,7 @@ GET /api/chart/v2/{isin}[?format=png|jpg|jpeg|jpgEnc|pdf&width=&height=&save=tru
### Grafico Sottostante standalone — parametri
```
GET /api/chart/underlying/{idUnderlyings}[?format=png|jpg|jpeg|pdf&width=&height=]
GET /api/chart/underlying/{idUnderlyings}[?format=png|jpg|jpeg|pdf&width=&height=&years=]
```
Mostra solo l'andamento storico prezzo di **un singolo sottostante** (`dbo.Underlyings`), identificato da `IDUnderlyings` — nessun ISIN certificato, nessuna barriera/strike/trigger, nessuna legenda. Titolo del grafico: `{Name} ({Ticker_bbg})`. SP: `cedlab_Chart_UnderlyingOnly`.
@@ -135,6 +135,9 @@ Mostra solo l'andamento storico prezzo di **un singolo sottostante** (`dbo.Under
| Parametro | Valori | Effetto |
|-----------|--------|---------|
| `?format=` | `png` (default), `jpg`/`jpeg`, `pdf` | Formato output |
| `?years=` | intero, default `5`, clamp `1`-`20` | Ampiezza storico prezzi caricato dalla SP |
**Prezzo usato**: `Px_close` se `Underlyings.AdjustedPrices=0`, altrimenti `Px_closeadj`. Nessun fallback incrociato tra i due campi — se `Px_closeadj` non è backfillato prima di uno split/rettifica (es. Apple: valorizzato solo da gennaio 2019), lo storico restituito si ferma lì invece di mostrare un gradino artificiale mischiando dati adjusted/non-adjusted.
Non supporta `jpgEnc``?save=true` (nessun alias-certificato applicabile a un sottostante puro).