DDL schemas for Trading Platform: - User management - Authentication - Payments - Education - ML predictions - Trading data Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
299 lines
12 KiB
Markdown
299 lines
12 KiB
Markdown
---
|
|
id: "MAP-database-schemas"
|
|
title: "Mapa de Schemas de Base de Datos"
|
|
type: "Index"
|
|
status: "Activo"
|
|
project: "trading-platform"
|
|
version: "2.0.0"
|
|
created_date: "2025-12-06"
|
|
updated_date: "2026-01-07"
|
|
author: "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)
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
- [DIRECTIVA-POLITICA-CARGA-LIMPIA.md](../DIRECTIVA-POLITICA-CARGA-LIMPIA.md)
|
|
- [VALIDACION-ALINEACION-ML-2026-01-07.md](../../docs/99-analisis/VALIDACION-ALINEACION-ML-2026-01-07.md)
|
|
- [ET-ML-004-api.md](../../docs/02-definicion-modulos/OQI-006-ml-signals/especificaciones/ET-ML-004-api.md)
|
|
|
|
---
|
|
*Última actualización: 2026-01-07*
|
|
*Generado por: Claude-Orquestador*
|