feat: dual-path save for format=jpg/jpeg with ?save=true

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>
This commit is contained in:
2026-05-28 12:37:41 +02:00
parent 52bda26a4b
commit 03dad27414

View File

@@ -121,15 +121,28 @@ public class ChartController : ControllerBase
|| format.Equals("jpg", StringComparison.OrdinalIgnoreCase)
|| format.Equals("jpeg", StringComparison.OrdinalIgnoreCase);
// Alias codificato (necessario sia per jpgEnc che per il salvataggio su disco)
string? alias = isJpegEnc ? await _chartDataServiceV2.GetChartAliasAsync(isin) : null;
// Alias: serve per jpgEnc (nome file risposta) e per il doppio salvataggio in jpg/jpeg
string? alias = (isJpegEnc || (isJpeg && save))
? await _chartDataServiceV2.GetChartAliasAsync(isin)
: null;
byte[] imgBytes = SkiaChartRendererV2.RenderToPng(chartData, width, height, jpeg: isJpeg);
// ── Salvataggio su disco (solo se ?save=true) ─────────────────
if (save && isJpeg)
{
await SaveChartToDiskAsync(isin, alias, imgBytes, isJpegEnc);
if (isJpegEnc)
{
// jpgEnc: solo SavePathEnc/{alias}.jpg
await SaveChartToDiskAsync(isin, alias, imgBytes, isEnc: true);
}
else
{
// jpg/jpeg: SavePath/{isin}.jpg + SavePathEnc/{alias}.jpg
await SaveChartToDiskAsync(isin, alias: null, imgBytes, isEnc: false);
if (!string.IsNullOrEmpty(alias))
await SaveChartToDiskAsync(isin, alias, imgBytes, isEnc: true);
}
}
if (format.Equals("pdf", StringComparison.OrdinalIgnoreCase))