trading-platform/docs/02-definicion-modulos/OQI-007-llm-agent/implementacion/TRACEABILITY.yml
Adrian Flores Cortes 618e3220bd [F1-F3] feat: Complete entity types, stores, and documentation
FASE 1 - DDL-Backend Coherence (continued):
- market-data.types.ts: Updated TickerRow, added Ohlcv5mRow, Ohlcv15mRow, OhlcvStagingRow
- llm.types.ts: Updated UserPreferences, UserMemory, Embedding + 3 Row types
- financial.types.ts: +6 types (Invoice, WalletAuditLog, etc.)
- entity.types.ts (trading): +5 types (Symbol, TradingBot, etc.)

FASE 2 - Backend-Frontend Coherence (continued):
- llmStore.ts: New Zustand store with session lifecycle management
- riskStore.ts: New Zustand store for risk assessment
- risk.service.ts: New service with 8 functions
- currency.service.ts: New service with 5 functions

FASE 3 - Documentation:
- OQI-007: Updated to 100% (7 ET, 11 US, 6 RF)
- OQI-008: Added ET-PFM-010-architecture.md, ET-PFM-011-goals-system.md
- Updated all _MAP.md and README.md indexes

Build validation: Backend tsc PASSED, Frontend Vite PASSED

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:39:10 -06:00

487 lines
15 KiB
YAML

# TRACEABILITY.yml - OQI-007 LLM Strategy Agent
# Mapeo de requerimientos a implementación
version: "1.1.0"
epic: OQI-007
name: "LLM Strategy Agent (Copilot)"
updated: "2026-01-28"
status: in_progress
# Resumen de trazabilidad
summary:
total_requirements: 6
total_specs: 7
total_user_stories: 11
total_files_to_implement: 48
test_coverage: "15%"
story_points: 60
implementation_progress: "45%"
documentation_progress: "100%"
phase: 2
# Mapeo de Requerimientos Funcionales
requirements:
RF-LLM-001:
name: "Chat Interface"
status: planned
specs:
- ET-LLM-001
- ET-LLM-005
user_stories:
- US-LLM-001
- US-LLM-002
implementation:
backend:
- path: apps/backend/src/modules/copilot/services/chat.service.ts
description: "Servicio de chat con LLM"
methods:
- sendMessage
- getConversation
- getConversations
- clearConversation
- regenerateResponse
- path: apps/backend/src/modules/copilot/controllers/copilot.controller.ts
methods:
- chat
- getConversations
- getConversation
- deleteConversation
- path: apps/backend/src/modules/copilot/copilot.routes.ts
routes:
- "POST /copilot/chat"
- "GET /copilot/conversations"
- "GET /copilot/conversations/:id"
- "DELETE /copilot/conversations/:id"
frontend:
- path: apps/frontend/src/modules/copilot/pages/Copilot.tsx
description: "Página principal del Copilot"
- path: apps/frontend/src/modules/copilot/components/ChatInterface.tsx
description: "Interfaz de chat"
- path: apps/frontend/src/modules/copilot/components/MessageBubble.tsx
description: "Burbuja de mensaje"
- path: apps/frontend/src/modules/copilot/components/ChatInput.tsx
description: "Input de chat"
- path: apps/frontend/src/modules/copilot/components/ConversationList.tsx
description: "Lista de conversaciones"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- conversations
- messages
- message_feedback
enums:
- message_role_enum
- feedback_type_enum
tests:
- path: apps/backend/tests/copilot/chat.service.test.ts
status: planned
RF-LLM-002:
name: "Market Analysis"
status: planned
specs:
- ET-LLM-002
- ET-LLM-003
user_stories:
- US-LLM-003
- US-LLM-004
implementation:
backend:
- path: apps/backend/src/modules/copilot/services/analysis.service.ts
description: "Servicio de análisis de mercado"
methods:
- analyzeSymbol
- analyzeTrend
- analyzeNews
- generateInsights
- compareSymbols
- path: apps/backend/src/modules/copilot/agents/market-analyst.agent.ts
description: "Agente especializado en análisis"
- path: apps/backend/src/modules/copilot/copilot.routes.ts
routes:
- "POST /copilot/analyze/:symbol"
- "GET /copilot/insights/:symbol"
- "POST /copilot/compare"
frontend:
- path: apps/frontend/src/modules/copilot/components/AnalysisPanel.tsx
description: "Panel de análisis"
- path: apps/frontend/src/modules/copilot/components/InsightCard.tsx
description: "Tarjeta de insight"
- path: apps/frontend/src/modules/copilot/components/SymbolAnalysis.tsx
description: "Análisis de símbolo"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- analysis_cache
- insights
tests:
- path: apps/backend/tests/copilot/analysis.service.test.ts
status: planned
RF-LLM-003:
name: "Strategy Suggestions"
status: planned
specs:
- ET-LLM-002
- ET-LLM-004
user_stories:
- US-LLM-005
- US-LLM-006
implementation:
backend:
- path: apps/backend/src/modules/copilot/services/strategy.service.ts
description: "Servicio de sugerencias de estrategia"
methods:
- suggestStrategy
- evaluateStrategy
- optimizeStrategy
- backtestStrategy
- getStrategies
- path: apps/backend/src/modules/copilot/agents/strategy-advisor.agent.ts
description: "Agente de estrategias"
- path: apps/backend/src/modules/copilot/copilot.routes.ts
routes:
- "POST /copilot/strategy/suggest"
- "POST /copilot/strategy/evaluate"
- "POST /copilot/strategy/backtest"
frontend:
- path: apps/frontend/src/modules/copilot/components/StrategySuggestion.tsx
description: "Sugerencia de estrategia"
- path: apps/frontend/src/modules/copilot/components/StrategyBuilder.tsx
description: "Constructor de estrategia"
- path: apps/frontend/src/modules/copilot/components/BacktestResults.tsx
description: "Resultados de backtest"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- strategy_suggestions
- backtest_results
tests:
- path: apps/backend/tests/copilot/strategy.service.test.ts
status: planned
RF-LLM-004:
name: "Educational Assistance"
status: planned
specs:
- ET-LLM-005
user_stories:
- US-LLM-007
implementation:
backend:
- path: apps/backend/src/modules/copilot/services/tutor.service.ts
description: "Servicio de tutoría"
methods:
- explainConcept
- answerQuestion
- generateQuiz
- recommendCourse
- explainIndicator
- path: apps/backend/src/modules/copilot/agents/tutor.agent.ts
description: "Agente tutor"
- path: apps/backend/src/modules/copilot/copilot.routes.ts
routes:
- "POST /copilot/tutor/explain"
- "POST /copilot/tutor/quiz"
- "GET /copilot/tutor/recommendations"
frontend:
- path: apps/frontend/src/modules/copilot/components/TutorChat.tsx
description: "Chat de tutoría"
- path: apps/frontend/src/modules/copilot/components/ConceptExplainer.tsx
description: "Explicador de conceptos"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- learning_interactions
tests:
- path: apps/backend/tests/copilot/tutor.service.test.ts
status: planned
RF-LLM-005:
name: "Tool Integration"
status: planned
specs:
- ET-LLM-003
- ET-LLM-006
user_stories:
- US-LLM-008
- US-LLM-009
implementation:
backend:
- path: apps/backend/src/modules/copilot/tools/chart-tool.ts
description: "Herramienta de charts"
functions:
- getChartData
- addIndicator
- drawTrendline
- setTimeframe
- path: apps/backend/src/modules/copilot/tools/order-tool.ts
description: "Herramienta de órdenes"
functions:
- previewOrder
- createOrder
- modifyOrder
- cancelOrder
- path: apps/backend/src/modules/copilot/tools/research-tool.ts
description: "Herramienta de investigación"
functions:
- searchNews
- getEarnings
- getFundamentals
- getSentiment
- path: apps/backend/src/modules/copilot/tools/portfolio-tool.ts
description: "Herramienta de portfolio"
functions:
- getPositions
- getPerformance
- analyzeRisk
- path: apps/backend/src/modules/copilot/services/tool-executor.service.ts
description: "Ejecutor de herramientas"
frontend:
- path: apps/frontend/src/modules/copilot/components/ToolOutput.tsx
description: "Output de herramientas"
- path: apps/frontend/src/modules/copilot/components/ActionPreview.tsx
description: "Preview de acción"
- path: apps/frontend/src/modules/copilot/components/ConfirmAction.tsx
description: "Confirmación de acción"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- tool_executions
- tool_audit_log
tests:
- path: apps/backend/tests/copilot/tools.test.ts
status: planned
RF-LLM-006:
name: "Context Management"
status: planned
specs:
- ET-LLM-001
- ET-LLM-004
user_stories:
- US-LLM-010
# Nueva: Trading Execution via Chat
RF-LLM-007:
name: "Trading Execution via Chat"
status: planned
specs:
- ET-LLM-005
- ET-LLM-007
user_stories:
- US-LLM-011
implementation:
backend:
- path: apps/backend/src/modules/copilot/services/context.service.ts
description: "Servicio de gestión de contexto"
methods:
- buildContext
- getMarketContext
- getUserContext
- getHistoricalContext
- summarizeConversation
- path: apps/backend/src/modules/copilot/services/memory.service.ts
description: "Servicio de memoria"
methods:
- storeMemory
- retrieveMemories
- forgetMemory
- updateMemory
- path: apps/backend/src/modules/copilot/prompts/system-prompts.ts
description: "System prompts por contexto"
database:
- path: apps/database/schemas/07_llm_schema.sql
tables:
- user_memories
- context_snapshots
tests:
- path: apps/backend/tests/copilot/context.service.test.ts
status: planned
# Agentes especializados
agents:
- name: Market Analyst
role: "Análisis técnico y fundamental"
tools: [chart-tool, research-tool]
prompt_template: market_analyst_prompt.md
- name: Strategy Advisor
role: "Sugerencias de estrategia"
tools: [chart-tool, portfolio-tool]
prompt_template: strategy_advisor_prompt.md
- name: Trading Tutor
role: "Educación y explicaciones"
tools: [chart-tool]
prompt_template: tutor_prompt.md
- name: Order Assistant
role: "Ayuda con órdenes"
tools: [order-tool, chart-tool]
prompt_template: order_assistant_prompt.md
# Mapeo de archivos de configuración
config_files:
backend:
- path: apps/backend/src/modules/copilot/copilot.module.ts
description: "Módulo de Copilot"
- path: apps/backend/src/modules/copilot/types/copilot.types.ts
description: "Tipos TypeScript"
- path: apps/backend/src/config/llm.config.ts
description: "Configuración de LLM"
- path: apps/backend/src/modules/copilot/prompts/
description: "Directorio de prompts"
frontend:
- path: apps/frontend/src/modules/copilot/stores/copilot.store.ts
description: "Store de Copilot Zustand"
- path: apps/frontend/src/modules/copilot/hooks/useCopilot.ts
description: "Hook principal de Copilot"
- path: apps/frontend/src/modules/copilot/services/copilot.api.ts
description: "Cliente API de Copilot"
# Dependencias externas
external_dependencies:
npm_backend:
- name: openai
version: "^4.20.0"
usage: "OpenAI API client"
- name: "@anthropic-ai/sdk"
version: "^0.9.0"
usage: "Claude API client"
- name: langchain
version: "^0.0.200"
usage: "LLM framework"
- name: "@pinecone-database/pinecone"
version: "^2.0.0"
usage: "Vector database"
npm_frontend:
- name: react-markdown
version: "^9.0.0"
usage: "Renderizar respuestas markdown"
- name: prismjs
version: "^1.29.0"
usage: "Syntax highlighting"
# APIs de terceros
third_party_apis:
- name: OpenAI API
docs: https://platform.openai.com/docs
models:
- gpt-4-turbo
- gpt-4-vision
usage:
- Chat completions
- Function calling
- Embeddings
- name: Anthropic Claude
docs: https://docs.anthropic.com
models:
- claude-3-opus
- claude-3-sonnet
usage:
- Análisis complejo
- Respuestas largas
- name: Pinecone
docs: https://docs.pinecone.io
usage:
- Vector storage
- Similarity search
- Memory retrieval
# Endpoints API
api_endpoints:
base_path: /api/v1/copilot
endpoints:
# Chat
- method: POST
path: /chat
requirement: RF-LLM-001
auth: true
description: "Enviar mensaje"
- method: GET
path: /conversations
requirement: RF-LLM-001
auth: true
- method: GET
path: /conversations/:id
requirement: RF-LLM-001
auth: true
- method: DELETE
path: /conversations/:id
requirement: RF-LLM-001
auth: true
# Análisis
- method: POST
path: /analyze/:symbol
requirement: RF-LLM-002
auth: true
- method: GET
path: /insights/:symbol
requirement: RF-LLM-002
auth: true
# Estrategias
- method: POST
path: /strategy/suggest
requirement: RF-LLM-003
auth: true
- method: POST
path: /strategy/backtest
requirement: RF-LLM-003
auth: true
# Tutor
- method: POST
path: /tutor/explain
requirement: RF-LLM-004
auth: true
# Acciones
- method: POST
path: /action/preview
requirement: RF-LLM-005
auth: true
- method: POST
path: /action/execute
requirement: RF-LLM-005
auth: true
# WebSocket para streaming
websocket_endpoints:
- channel: "copilot"
events:
- "message_start"
- "message_delta"
- "message_end"
- "tool_call"
- "tool_result"
- "error"
# Dependencias de épicas
dependencies:
blocks: []
blocked_by:
- epic: OQI-001
reason: "Requiere autenticación"
- epic: OQI-003
reason: "Necesita datos de trading para análisis"
- epic: OQI-006
reason: "Integra señales ML en respuestas"
# Rate limiting
rate_limits:
free_tier:
messages_per_day: 10
tokens_per_message: 2000
pro_tier:
messages_per_day: 100
tokens_per_message: 4000
premium_tier:
messages_per_day: unlimited
tokens_per_message: 8000
# Notas y decisiones
notes:
- "Streaming de respuestas vía WebSocket"
- "Function calling para ejecutar herramientas"
- "Contexto de mercado actualizado en tiempo real"
- "Memoria de conversación con vector embeddings"
- "Fallback a modelos más económicos si cuota excedida"
- "Audit log de todas las acciones ejecutadas"
- "Confirmación obligatoria para órdenes reales"