Componenti principali
server.js: bootstrap via createMicroserviceServer;
modules/main.js: service runtime (BaseService) con engine/repository/task manager;
modules/engine/liquidityScoreEngine.js: calcolo score e regime;
providers/*: fetch dati provider (VIX, SPY, DXY, credit);
repositories/*: persistenza snapshot e cache provider;
modules/tasks/recomputeTaskManager.js: gestione task asincroni e stato;
controllers/liquidityScoreController.js + routes/liquidityScoreRoutes.js: API REST.
Flusso calcolo score
- Trigger recompute (
POST /liquidity-score/recompute).
- Task manager crea task asincrono con stato RUNNING.
- Engine chiama provider e normalizza componenti.
- Aggregazione pesata ->
score, riskRegime, volatilityRegime, confidence.
- Snapshot salvato in repository + pruning storico.
- Aggiornamenti task pubblicati su Redis data channel.
Flusso osservabilita
- endpoint
/liquidity-score/tasks e /liquidity-score/tasks/:taskId per tracking job;
- endpoint
/liquidity-score/providers/status per health provider e fallback info.