ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
253 lines
6.0 KiB
Markdown
253 lines
6.0 KiB
Markdown
---
|
|
id: "DECISIONES-ARQUITECTONICAS"
|
|
title: "DECISIONES ARQUITECTÓNICAS - Trading Platform"
|
|
type: "Documentation"
|
|
project: "trading-platform"
|
|
version: "1.0.0"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# DECISIONES ARQUITECTÓNICAS - Trading Platform
|
|
|
|
**Fecha:** 2025-12-06
|
|
**Estado:** Aprobado
|
|
**Versión:** 1.0.0
|
|
|
|
---
|
|
|
|
## Resumen de Decisiones
|
|
|
|
Este documento consolida las decisiones arquitectónicas tomadas para resolver los conflictos identificados en el análisis de requisitos.
|
|
|
|
---
|
|
|
|
## DEC-001: Moneda Principal
|
|
|
|
### Contexto
|
|
Se detectó conflicto entre documentos que definían planes en USD ($19-99) vs MXN (499-999).
|
|
|
|
### Decisión
|
|
**Moneda principal: USD** con soporte para conversión a MXN.
|
|
|
|
### Justificación
|
|
- Plataforma internacional de trading requiere estándar USD
|
|
- Stripe maneja mejor USD como moneda base
|
|
- MXN se soporta mediante conversión en checkout
|
|
|
|
### Implementación
|
|
```yaml
|
|
Planes (USD):
|
|
- Basic: $19/mes
|
|
- Pro: $49/mes
|
|
- Premium: $99/mes
|
|
|
|
Tabla currency_exchange_rates:
|
|
- Actualización diaria de tipo de cambio
|
|
- Mostrar precio en MXN en UI para usuarios mexicanos
|
|
```
|
|
|
|
---
|
|
|
|
## DEC-002: Fusión/Delimitación OQI-004 y OQI-008
|
|
|
|
### Contexto
|
|
Se detectó 70-85% de duplicación funcional entre:
|
|
- OQI-004: Cuentas de Inversión PAMM
|
|
- OQI-008: Portfolio Manager
|
|
|
|
### Decisión
|
|
**Delimitar responsabilidades** (no fusionar):
|
|
|
|
| Épica | Responsabilidad Exclusiva |
|
|
|-------|---------------------------|
|
|
| OQI-004 | Cuentas PAMM gestionadas por agentes (Atlas, Orion, Nova) |
|
|
| OQI-008 | Portfolio personal del usuario, cuestionario de riesgo, metas |
|
|
|
|
### Componentes Compartidos (en `financial` schema)
|
|
- Wallets unificadas
|
|
- Historial de transacciones
|
|
- Perfil de riesgo (calculado por cuestionario de OQI-008, usado por OQI-004)
|
|
|
|
### Implementación
|
|
- OQI-004 usa `investment` schema para PAMM específico
|
|
- OQI-008 funcionalidad de portfolio se integra en dashboard general
|
|
- Cuestionario de riesgo en `investment.risk_questionnaire`
|
|
- Perfil resultante alimenta selección de agente en PAMM
|
|
|
|
---
|
|
|
|
## DEC-003: Schema de Usuarios
|
|
|
|
### Contexto
|
|
Inconsistencia entre `public.users` y `auth.users` en referencias.
|
|
|
|
### Decisión
|
|
**Schema dedicado: `auth`** para todas las tablas de autenticación.
|
|
|
|
### Justificación
|
|
- Separación de concerns clara
|
|
- Facilita RLS (Row Level Security)
|
|
- Permite migración futura a servicio de auth separado
|
|
|
|
### Implementación
|
|
```sql
|
|
-- Schema auth contiene:
|
|
auth.users
|
|
auth.user_profiles
|
|
auth.oauth_accounts
|
|
auth.sessions
|
|
auth.email_verifications
|
|
auth.phone_verifications
|
|
auth.password_reset_tokens
|
|
auth.auth_logs
|
|
auth.login_attempts
|
|
auth.rate_limiting_config
|
|
|
|
-- Todas las FK de otros schemas referencian:
|
|
REFERENCES auth.users(id)
|
|
```
|
|
|
|
---
|
|
|
|
## DEC-004: Vector Database para LLM
|
|
|
|
### Contexto
|
|
OQI-007 (LLM Agent) requiere RAG/Vector Store pero no estaba especificado.
|
|
|
|
### Decisión
|
|
**pgvector** (extensión de PostgreSQL)
|
|
|
|
### Justificación
|
|
- No requiere infraestructura adicional
|
|
- Integración nativa con PostgreSQL existente
|
|
- Suficiente para volumen inicial (< 1M embeddings)
|
|
- Migración a Pinecone/Weaviate si escala necesario
|
|
|
|
### Implementación
|
|
```sql
|
|
CREATE EXTENSION IF NOT EXISTS vector;
|
|
|
|
CREATE TABLE llm.embeddings (
|
|
id UUID PRIMARY KEY,
|
|
content_type VARCHAR(50), -- 'lesson', 'article', 'faq'
|
|
content_id UUID,
|
|
embedding vector(1536), -- OpenAI ada-002
|
|
metadata JSONB,
|
|
created_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX idx_embeddings_vector ON llm.embeddings
|
|
USING ivfflat (embedding vector_cosine_ops);
|
|
```
|
|
|
|
---
|
|
|
|
## DEC-005: Distribución PAMM
|
|
|
|
### Contexto
|
|
Ambigüedad sobre frecuencia de distribución de ganancias (80/20): ¿mensual o trimestral?
|
|
|
|
### Decisión
|
|
**Distribución mensual** con opción de reinversión.
|
|
|
|
### Justificación
|
|
- Mayor transparencia para inversionistas
|
|
- Alineado con ciclo de billing (suscripciones mensuales)
|
|
- Reinversión automática disponible para compounding
|
|
|
|
### Implementación
|
|
```sql
|
|
CREATE TYPE investment.distribution_frequency AS ENUM (
|
|
'monthly',
|
|
'quarterly'
|
|
);
|
|
|
|
-- Default: monthly
|
|
-- Usuario puede optar por quarterly con bonus de 2% extra
|
|
```
|
|
|
|
---
|
|
|
|
## DEC-006: Resolución de Dependencia Circular
|
|
|
|
### Contexto
|
|
OQI-003 (Trading) ↔ OQI-006 (ML Signals) tenían dependencia circular que bloqueaba MVP.
|
|
|
|
### Decisión
|
|
**Interfaz abstracta `trading.signals`** como punto de integración.
|
|
|
|
### Justificación
|
|
- Desacopla ambos módulos
|
|
- Trading puede desarrollarse con MockSignalProvider
|
|
- ML puede desarrollarse independientemente
|
|
- Integración mediante tabla compartida
|
|
|
|
### Implementación
|
|
```
|
|
trading.signals (tabla interfaz)
|
|
↑ ↑
|
|
│ │
|
|
OQI-003 OQI-006
|
|
(consume) (produce)
|
|
```
|
|
|
|
```sql
|
|
-- OQI-003 lee de trading.signals
|
|
-- OQI-006 escribe a trading.signals
|
|
-- No hay FK directa entre módulos
|
|
```
|
|
|
|
---
|
|
|
|
## DEC-007: Timestamps Estándar
|
|
|
|
### Contexto
|
|
Inconsistencia entre TIMESTAMP y TIMESTAMPTZ en definiciones.
|
|
|
|
### Decisión
|
|
**TIMESTAMPTZ en todas las columnas de fecha/hora**
|
|
|
|
### Justificación
|
|
- Plataforma internacional requiere timezone awareness
|
|
- PostgreSQL best practice
|
|
- Evita bugs de conversión de zonas horarias
|
|
|
|
### Implementación
|
|
```sql
|
|
-- SIEMPRE usar:
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
|
|
-- NUNCA usar:
|
|
created_at TIMESTAMP -- SIN timezone
|
|
```
|
|
|
|
---
|
|
|
|
## Matriz de Impacto
|
|
|
|
| Decisión | Épicas Impactadas | Archivos a Modificar |
|
|
|----------|-------------------|---------------------|
|
|
| DEC-001 | OQI-005 | ET-PAY-*.md, DDL financial |
|
|
| DEC-002 | OQI-004, OQI-008 | README.md de ambas, DDL investment |
|
|
| DEC-003 | TODAS | Todos los ET-*-database.md |
|
|
| DEC-004 | OQI-007 | ET-LLM-*.md, DDL llm |
|
|
| DEC-005 | OQI-004 | ET-INV-*.md, DDL investment |
|
|
| DEC-006 | OQI-003, OQI-006 | ET-TRD-*.md, ET-ML-*.md, DDL trading |
|
|
| DEC-007 | TODAS | Todos los DDL |
|
|
|
|
---
|
|
|
|
## Próximos Pasos
|
|
|
|
1. ✅ Documentar decisiones (este documento)
|
|
2. ✅ Crear ADRs formales (ADR-002 a ADR-006)
|
|
3. ✅ Actualizar DDLs según decisiones
|
|
4. ⏳ Actualizar especificaciones técnicas
|
|
5. ⏳ Validar con recreación de BD
|
|
|
|
---
|
|
|
|
*Documento generado por Requirements-Analyst Agent*
|
|
*Trading Platform - Trading Platform*
|