Structure, persistance, recovery #2

Merged
facundo.marion merged 2 commits from FIXDPL-2/New_structure_and_persistance into develop 2026-03-30 13:33:58 +00:00

🐛 Reason to Be

Se reestructura el ciclo de vida de los trades en el FIX Manager para mantener un historial completo (active/rejected/completed) en lugar de borrar trades del
mapa al finalizar. Se agrega soporte para TradeID como clave de correlación cross-service (DPL ↔ Post-Trade), nuevos endpoints REST para consultar todos los
trades y logs unificados, y tests unitarios completos para la lógica de recovery.

Resolves #FIXDPL-2

Expected Behaviour

Trade lifecycle con estados:

  • Los trades ya no se eliminan del mapa al recibir rejection o TRDSUMM — se marcan como rejected o completed
  • GET /trades devuelve solo trades activos
  • GET /trades/all devuelve todos los trades con su status
  • GET /trades/:quoteReqID/full-log devuelve logs DPL + Post-Trade correlacionados por TradeID

TradeID (correlación cross-service):

  • Se parsea TradeID del ExecutionReport (Tag 1003) y se persiste en qfixdpl_messages y qfixdpl_logs
  • En recovery se reconstruye el TradeID desde los mensajes almacenados

Recovery mejorado:

  • onLogon asigna SessionID solo a trades activos con SessionID vacío (restart mid-trade)
  • QuoteAckStatus "0" (received not yet processed) ya no se trata como rejection — solo "2" marca rejected
  • El log de recovery muestra totalTrades y activeTrades

Cambios en DB:

  • Columna trade_id + índice en qfixdpl_messages y qfixdpl_logs

📋 How To Test

  • Verificar que GET /trades solo devuelve trades con status active
  • Verificar que GET /trades/all devuelve trades en todos los estados (active, rejected, completed)
  • Ejecutar un trade completo y verificar que GET /trades/:quoteReqID/full-log devuelve entries de DPL y Post-Trade
  • Reiniciar el servicio mid-trade y verificar que el recovery reconstruye correctamente los trades con sus estados y TradeIDs
  • Verificar que un QuoteAck con status "0" no marca el trade como rejected
  • Correr go test ./src/client/fix/... — 24 tests pasan
🐛 Reason to Be Se reestructura el ciclo de vida de los trades en el FIX Manager para mantener un historial completo (active/rejected/completed) en lugar de borrar trades del mapa al finalizar. Se agrega soporte para TradeID como clave de correlación cross-service (DPL ↔ Post-Trade), nuevos endpoints REST para consultar todos los trades y logs unificados, y tests unitarios completos para la lógica de recovery. Resolves #FIXDPL-2 ✅ Expected Behaviour Trade lifecycle con estados: - Los trades ya no se eliminan del mapa al recibir rejection o TRDSUMM — se marcan como rejected o completed - GET /trades devuelve solo trades activos - GET /trades/all devuelve todos los trades con su status - GET /trades/:quoteReqID/full-log devuelve logs DPL + Post-Trade correlacionados por TradeID TradeID (correlación cross-service): - Se parsea TradeID del ExecutionReport (Tag 1003) y se persiste en qfixdpl_messages y qfixdpl_logs - En recovery se reconstruye el TradeID desde los mensajes almacenados Recovery mejorado: - onLogon asigna SessionID solo a trades activos con SessionID vacío (restart mid-trade) - QuoteAckStatus "0" (received not yet processed) ya no se trata como rejection — solo "2" marca rejected - El log de recovery muestra totalTrades y activeTrades Cambios en DB: - Columna trade_id + índice en qfixdpl_messages y qfixdpl_logs 📋 How To Test - Verificar que GET /trades solo devuelve trades con status active - Verificar que GET /trades/all devuelve trades en todos los estados (active, rejected, completed) - Ejecutar un trade completo y verificar que GET /trades/:quoteReqID/full-log devuelve entries de DPL y Post-Trade - Reiniciar el servicio mid-trade y verificar que el recovery reconstruye correctamente los trades con sus estados y TradeIDs - Verificar que un QuoteAck con status "0" no marca el trade como rejected - Correr go test ./src/client/fix/... — 24 tests pasan
facundo.marion added 1 commit 2026-03-30 13:32:01 +00:00
facundo.marion added 1 commit 2026-03-30 13:33:13 +00:00
facundo.marion merged commit 34b1cd2148 into develop 2026-03-30 13:33:58 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Quantex/qfixdpl#2
No description provided.