| id |
title |
type |
status |
project |
version |
created_date |
updated_date |
author |
| MAP-database-schemas |
Mapa de Schemas de Base de Datos |
Index |
Activo |
trading-platform |
2.0.0 |
2025-12-06 |
2026-01-07 |
Claude-Orquestador |
_MAP - Database Schemas
Índice de navegación para los esquemas de base de datos
ACTUALIZADO: 2026-01-07 - market_data schema + 6 activos + ML tables
Política: Carga Limpia (DDL-First) - Ver DIRECTIVA-POLITICA-CARGA-LIMPIA.md
Total: 77 tablas, 104 FK, 9 schemas
Estructura de Archivos
apps/database/
├── ddl/
│ └── schemas/
│ ├── auth/ # 12 tablas - Autenticación y usuarios
│ ├── education/ # 14 tablas - Plataforma educativa
│ ├── trading/ # 10 tablas - Trading y Paper Engine
│ ├── investment/ # 7 tablas - Cuentas PAMM
│ ├── financial/ # 10 tablas - Pagos, wallets unificadas
│ ├── ml/ # 9 tablas - Machine Learning
│ ├── llm/ # 4 tablas - LLM Agent (+ pgvector)
│ ├── audit/ # 7 tablas - Auditoría y compliance
│ └── market_data/ # 4 tablas - **NUEVO** Datos OHLCV
├── seeds/
│ └── prod/ # Seeds de producción
└── scripts/
├── create-database.sh
├── drop-and-recreate-database.sh
└── migrate_6_assets.sh # **NUEVO** Migración MySQL→PostgreSQL
Resumen de Schemas
| Schema |
Propósito |
Tablas |
Funciones |
Estado |
| auth |
Autenticación y usuarios |
12 |
4 |
✅ Completado |
| education |
Plataforma educativa |
14 |
8 |
✅ Completado |
| trading |
Trading y Paper Engine |
10 |
4 |
✅ Completado |
| investment |
Cuentas PAMM |
7 |
- |
✅ Completado |
| financial |
Wallets unificadas, pagos |
10 |
4 |
✅ Completado |
| ml |
Machine Learning signals |
9 |
1 |
✅ Completado |
| llm |
LLM Agent, RAG |
4 |
- |
⚠️ Requiere pgvector |
| audit |
Logs, compliance |
7 |
- |
✅ Completado |
| market_data |
Datos OHLCV 5m/15m |
4 |
2 |
✅ NUEVO |
Total: 77 tablas, 104 FK
Detalle por Schema
auth (12 tablas)
| Tabla |
Archivo |
Descripción |
users |
01-users.sql |
Usuarios base del sistema |
user_profiles |
02-user_profiles.sql |
Información extendida |
oauth_accounts |
03-oauth_accounts.sql |
Cuentas OAuth (Google, GitHub) |
sessions |
04-sessions.sql |
Sesiones activas |
email_verifications |
05-email_verifications.sql |
Verificación de email |
phone_verifications |
06-phone_verifications.sql |
Verificación de teléfono |
password_reset_tokens |
07-password_reset_tokens.sql |
Tokens de reset |
auth_logs |
08-auth_logs.sql |
Log de autenticación |
login_attempts |
09-login_attempts.sql |
Control de intentos |
rate_limiting_config |
10-rate_limiting_config.sql |
Configuración rate limit |
deferred_constraints |
99-deferred-constraints.sql |
NUEVO - FK diferidas |
Funciones: update_updated_at, log_auth_event, cleanup_expired_sessions, create_user_profile_trigger
market_data (4 tablas) NUEVO
| Tabla |
Archivo |
Descripción |
tickers |
01-tickers.sql |
Catálogo de 6 activos (XAUUSD, EURUSD, BTCUSD, GBPUSD, USDJPY, AUDUSD) |
ohlcv_5m |
02-ohlcv_5m.sql |
Datos OHLCV 5 minutos (~4M registros) |
ohlcv_15m |
03-ohlcv_15m.sql |
Datos OHLCV 15 minutos (~1.3M registros) |
ohlcv_5m_staging |
04-staging.sql |
Tabla staging para carga masiva |
Funciones: aggregate_5m_to_15m, aggregate_all_15m
Datos cargados:
| Activo |
Registros 5m |
Registros 15m |
Cobertura |
| XAUUSD |
706,397 |
234,961 |
2015-2025 |
| EURUSD |
755,896 |
251,839 |
2015-2025 |
| BTCUSD |
360,288 |
119,907 |
2015-2025 |
| GBPUSD |
752,281 |
250,430 |
2015-2025 |
| USDJPY |
746,464 |
248,520 |
2015-2025 |
| AUDUSD |
760,289 |
253,380 |
2015-2025 |
ml (9 tablas)
| Tabla |
Archivo |
Descripción |
models |
01-models.sql |
Registro de modelos ML |
model_versions |
02-model_versions.sql |
Versionado de modelos |
predictions |
03-predictions.sql |
Predicciones generadas |
prediction_outcomes |
04-prediction_outcomes.sql |
Resultados de predicciones |
feature_store |
05-feature_store.sql |
Features pre-calculadas |
llm_predictions |
06-llm_predictions.sql |
NUEVO - Predicciones LLM |
llm_prediction_outcomes |
07-llm_prediction_outcomes.sql |
NUEVO - Resultados LLM |
llm_decisions |
08-llm_decisions.sql |
NUEVO - Decisiones LLM |
risk_events |
09-risk_events.sql |
NUEVO - Eventos de riesgo |
Funciones: calculate_prediction_accuracy
education (14 tablas)
| Tabla |
Archivo |
Descripción |
categories |
01-categories.sql |
Categorías de cursos |
courses |
02-courses.sql |
Cursos de trading |
modules |
03-modules.sql |
Módulos de cursos |
lessons |
04-lessons.sql |
Lecciones individuales |
enrollments |
05-enrollments.sql |
Inscripciones |
progress |
06-progress.sql |
Progreso por lección |
quizzes |
07-quizzes.sql |
Cuestionarios |
quiz_questions |
08-quiz_questions.sql |
Preguntas de quiz |
quiz_attempts |
09-quiz_attempts.sql |
Intentos de quiz |
certificates |
10-certificates.sql |
Certificados emitidos |
user_achievements |
11-user_achievements.sql |
Logros de usuarios |
user_gamification_profile |
12-user_gamification_profile.sql |
Perfil gamificación |
user_activity_log |
13-user_activity_log.sql |
Log de actividad |
course_reviews |
14-course_reviews.sql |
Reseñas de cursos |
Funciones: update_updated_at, update_enrollment_progress, auto_complete_enrollment, generate_certificate, update_course_stats, update_enrollment_count, update_gamification_profile, views
trading (10 tablas)
| Tabla |
Archivo |
Descripción |
symbols |
01-symbols.sql |
Instrumentos financieros |
watchlists |
02-watchlists.sql |
Listas de seguimiento |
watchlist_items |
03-watchlist_items.sql |
Items en watchlists |
bots |
04-bots.sql |
Agentes de trading (Atlas, Orion, Nova) |
orders |
05-orders.sql |
Órdenes de trading |
positions |
06-positions.sql |
Posiciones abiertas/cerradas |
trades |
07-trades.sql |
Historial de trades |
signals |
08-signals.sql |
Señales generadas (interfaz ML) |
trading_metrics |
09-trading_metrics.sql |
Métricas de rendimiento |
paper_balances |
10-paper_balances.sql |
Balances paper trading |
Funciones: calculate_position_pnl, update_bot_stats, initialize_paper_balance, create_default_watchlist
investment (7 tablas)
| Tabla |
Archivo |
Descripción |
products |
01-products.sql |
Productos PAMM |
risk_questionnaire |
02-risk_questionnaire.sql |
Cuestionario de riesgo |
accounts |
03-accounts.sql |
Cuentas de inversión |
distributions |
04-distributions.sql |
Distribución de ganancias (80/20) |
transactions |
05-transactions.sql |
Movimientos de cuenta |
withdrawal_requests |
06-withdrawal_requests.sql |
Solicitudes de retiro |
daily_performance |
07-daily_performance.sql |
Rendimiento diario |
financial (10 tablas)
| Tabla |
Archivo |
Descripción |
wallets |
01-wallets.sql |
Wallets del sistema (unificado) |
wallet_transactions |
02-wallet_transactions.sql |
Transacciones de wallet |
subscriptions |
03-subscriptions.sql |
Suscripciones activas |
invoices |
04-invoices.sql |
Facturas |
payments |
05-payments.sql |
Pagos procesados (Stripe) |
wallet_audit_log |
06-wallet_audit_log.sql |
Auditoría de wallets |
currency_exchange_rates |
07-currency_exchange_rates.sql |
Tipos de cambio USD/MXN |
wallet_limits |
08-wallet_limits.sql |
Límites de operación |
customers |
09-customers.sql |
Clientes Stripe |
payment_methods |
10-payment_methods.sql |
Métodos de pago |
Funciones: update_wallet_balance, process_transaction, triggers, views
llm (4 tablas + extension)
| Tabla |
Archivo |
Descripción |
| (extension) |
00-extensions.sql |
pgvector extension para embeddings |
conversations |
01-conversations.sql |
Conversaciones con LLM |
messages |
02-messages.sql |
Mensajes de conversación |
user_preferences |
03-user_preferences.sql |
Preferencias de usuario |
user_memory |
04-user_memory.sql |
Memoria persistente |
Nota: La tabla embeddings (05-embeddings.sql) requiere pgvector. Sin pgvector instalado, esta tabla no se crea.
audit (7 tablas)
| Tabla |
Archivo |
Descripción |
audit_logs |
01-audit_logs.sql |
Log general de auditoría |
security_events |
02-security_events.sql |
Eventos de seguridad |
system_events |
03-system_events.sql |
Eventos del sistema |
trading_audit |
04-trading_audit.sql |
Auditoría de trading |
api_request_logs |
05-api_request_logs.sql |
Logs de API |
data_access_logs |
06-data_access_logs.sql |
Acceso a datos sensibles (GDPR) |
compliance_logs |
07-compliance_logs.sql |
Cumplimiento regulatorio |
Orden de Ejecución (create-database.sh)
1. CREATE DATABASE trading_platform
2. Extensions (uuid-ossp, pgcrypto, pg_trgm, btree_gin)
- pgvector opcional (requiere instalación)
3. Schemas:
- auth, education, financial, trading, investment,
- ml, llm, audit, market_data
4. DDL por schema en orden:
- auth (sin dependencias)
- education (depende de auth)
- financial (depende de auth)
- trading (depende de auth)
- investment (depende de auth, trading)
- ml (depende de auth, trading)
- llm (depende de auth)
- audit (depende de auth)
- market_data (sin dependencias)
5. Seeds (prod o dev)
6. Validación
Comandos de Uso
# Crear base de datos nueva
./scripts/create-database.sh
# Eliminar y recrear (desarrollo)
./scripts/drop-and-recreate-database.sh
# Solo cargar seeds
./scripts/create-database.sh --seeds-only --env dev
# Migrar datos de MySQL (6 activos, 10 años)
./scripts/migrate_6_assets.sh
Scripts Disponibles
| Script |
Descripción |
create-database.sh |
Crea BD con DDL y seeds |
drop-and-recreate-database.sh |
Drop + create (desarrollo) |
migrate_6_assets.sh |
NUEVO - Migra OHLCV desde MySQL |
migrate_all_tickers.sh |
Migra todos los tickers (17+) |
validate-ddl.sh |
Valida sintaxis de DDL |
Notas Importantes
- TIMESTAMPTZ: Todas las columnas de fecha usan timezone
- gen_random_uuid(): Para generación de UUIDs
- Locale fallback: Script maneja locales faltantes (WSL2)
- pgvector opcional: llm.embeddings requiere pgvector instalado
- Datos de mercado: 10 años de datos OHLCV (2015-2025)
Changelog
| Fecha |
Versión |
Cambios |
| 2026-01-07 |
2.0.0 |
market_data schema, 6 activos, tablas ML extendidas |
| 2025-12-06 |
1.0.0 |
Creación inicial |
Referencias
Última actualización: 2026-01-07
Generado por: Claude-Orquestador