Componenti principali
server.js: bootstrap API via createMicroserviceServer;
modules/main.js: classe servizio (BaseService) e startup moduli runtime;
routes/brokerExecutorIbkr.routes.js: mapping endpoint REST;
controllers/brokerExecutorIbkr.controller.js: orchestrazione request/response;
services/ibkr/ibkrOrders.service.js: logica business ordini;
services/ibkr/ibkrAdapter.js: adapter HTTP verso ibkr-bridge / gateway IBKR;
modules/startup/ibkrWsOrdersListener.module.js: listener websocket e riconciliazione ordini.
Flusso ordini
- API client invoca endpoint
/order (create/update/delete).
- Controller valida payload e delega a
IbkrOrdersService.
- Il service usa
IbkrAdapter per chiamare endpoint IBKR (via bridge o gateway diretto).
- Risposta normalizzata (
ibkrMapper) e ritornata al client.
Flusso stato ordini live
- In
_onInit parte IbkrWsOrdersListenerModule.
- Il modulo apre websocket IBKR e riceve eventi
live orders.
- Applica update stato e triggera refresh posizioni quando rileva fill.
- Espone snapshot listener su
/ws/status.
Idempotenza e sicurezza
- idempotenza create: repository in-memory con TTL su
externalCorrelationId;
- auth accesso API gestita da Traefik
forwardAuth;
- middleware
requireInternalToken presente nel codice per flussi service-to-service, ma non montato nelle route correnti.