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>
When format=jpg/jpeg and save=true, the chart is now saved to both:
- SavePath/{isin}.jpg (visible filename)
- SavePathEnc/{alias}.jpg (encoded filename, if alias exists)
This allows the external script to call the API once instead of twice
(no more separate jpg + jpgEnc calls). format=jpgEnc remains unchanged
for backward compatibility.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>