- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
15 KiB
_MAP - Database Schemas
Índice de navegación para los esquemas de base de datos
ACTUALIZADO: 2025-12-06 - Estructura DDL completada según análisis de requisitos Política: Carga Limpia (DDL-First) - Ver DIRECTIVA-POLITICA-CARGA-LIMPIA.md Total: 63 tablas, 91 archivos SQL
Estructura de Archivos
apps/database/
├── ddl/
│ └── schemas/
│ ├── auth/ # 10 tablas - Autenticación y usuarios
│ ├── education/ # 14 tablas - Plataforma educativa
│ ├── trading/ # 9 tablas - Trading y Paper Engine
│ ├── investment/ # 5 tablas - Cuentas PAMM
│ ├── financial/ # 8 tablas - Pagos, wallets unificadas
│ ├── ml/ # 5 tablas - Machine Learning
│ ├── llm/ # 5 tablas - LLM Agent
│ └── audit/ # 7 tablas - Auditoría y compliance
├── seeds/
│ ├── prod/ # Seeds de producción
│ └── dev/ # Seeds de desarrollo
└── scripts/
├── create-database.sh
└── drop-and-recreate-database.sh
Resumen de Schemas
| Schema | Propósito | Tablas | Funciones | Estado |
|---|---|---|---|---|
| auth | Autenticación y usuarios | 10 | 4 | ✅ Completado |
| education | Plataforma educativa | 14 | 8 | ✅ Completado |
| trading | Trading y Paper Engine | 9 | 2 | ✅ Completado |
| investment | Cuentas PAMM | 5 | - | ✅ Completado |
| financial | Wallets unificadas, pagos | 8 | 4 | ✅ Completado |
| ml | Machine Learning signals | 5 | - | ✅ Completado |
| llm | LLM Agent, RAG | 5 | - | ✅ Completado |
| audit | Logs, compliance | 7 | - | ✅ Completado |
Detalle por Schema
auth (10 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 | NUEVO - Control de intentos |
rate_limiting_config |
10-rate_limiting_config.sql | NUEVO - Configuración rate limit |
Funciones: update_updated_at, log_auth_event, cleanup_expired_sessions, create_user_profile_trigger
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 | NUEVO - Perfil gamificación |
user_activity_log |
13-user_activity_log.sql | NUEVO - Log de actividad |
course_reviews |
14-course_reviews.sql | NUEVO - 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 (9 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 | INTERFAZ ML - Señales generadas |
trading_metrics |
09-trading_metrics.sql | Métricas de rendimiento |
Funciones: calculate_position_pnl, update_bot_stats
Nota: La tabla
signalssirve como interfaz entre Trading (consume) y ML (produce), resolviendo la dependencia circular.
investment (5 tablas)
| Tabla | Archivo | Descripción |
|---|---|---|
products |
01-products.sql | Productos PAMM |
accounts |
02-accounts.sql | Cuentas de inversión |
transactions |
03-transactions.sql | Movimientos de cuenta |
distributions |
04-distributions.sql | Distribución de ganancias (80/20) |
risk_questionnaire |
05-risk_questionnaire.sql | NUEVO - Cuestionario de riesgo |
Delimitación: Este schema solo maneja PAMM. Portfolio personal se gestiona desde dashboard (OQI-008).
financial (8 tablas)
| Tabla | Archivo | Descripción |
|---|---|---|
wallets |
01-wallets.sql | UNIFICADO - Wallets del sistema |
wallet_transactions |
02-wallet_transactions.sql | Transacciones de wallet |
subscriptions |
03-subscriptions.sql | Suscripciones activas |
payments |
04-payments.sql | Pagos procesados (Stripe) |
invoices |
05-invoices.sql | Facturas |
wallet_audit_log |
06-wallet_audit_log.sql | NUEVO - Auditoría de wallets |
currency_exchange_rates |
07-currency_exchange_rates.sql | NUEVO - Tipos de cambio USD/MXN |
wallet_limits |
08-wallet_limits.sql | NUEVO - Límites de operación |
Funciones: update_wallet_balance, process_transaction, triggers, views
Decisión: USD como moneda principal, MXN mediante conversión. Ver DEC-001.
ml (5 tablas)
| Tabla | Archivo | Descripción |
|---|---|---|
models |
01-models.sql | Registro de modelos ML |
model_versions |
02-model_versions.sql | NUEVO - 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 (5 tablas)
| Tabla | Archivo | Descripción |
|---|---|---|
conversations |
01-conversations.sql | Conversaciones con LLM |
messages |
02-messages.sql | Mensajes de conversación |
user_preferences |
03-user_preferences.sql | NUEVO - Preferencias de usuario |
user_memory |
04-user_memory.sql | NUEVO - Memoria persistente |
embeddings |
05-embeddings.sql | RAG - Embeddings (pgvector) |
Decisión: pgvector para embeddings. Ver DEC-004.
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 |
Diagrama de Relaciones
┌─────────────────────────────────────────────────────────────────────┐
│ auth │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ users │──│ profiles │ │ sessions │ │ oauth_accounts │ │
│ └────┬─────┘ └──────────┘ └──────────┘ └──────────────────┘ │
│ │ │
└───────┼─────────────────────────────────────────────────────────────┘
│
├──────────────────────────┬──────────────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ education │ │ trading │ │ investment │
│ ┌───────────┐ │ │ ┌───────────┐ │ │ ┌───────────┐ │
│ │ courses │ │ │ │ bots │─┼──────────┼─│ products │ │
│ └─────┬─────┘ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │
│ │ │ │ │ │ │ │ │
│ ┌─────▼─────┐ │ │ ┌─────▼─────┐ │ │ ┌─────▼─────┐ │
│ │ lessons │ │ │ │ signals◄──┼─┼── ml │ │ accounts │ │
│ └───────────┘ │ │ └─────┬─────┘ │ │ └─────┬─────┘ │
│ │ │ │ │ │ │ │
│ ┌───────────┐ │ │ ┌─────▼─────┐ │ │ ┌─────▼─────┐ │
│ │enrollments│ │ │ │ positions │─┼──────────┼─│transactions│ │
│ └───────────┘ │ │ └───────────┘ │ │ └───────────┘ │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
│ │ │
└──────────────────────────┼──────────────────────────┘
│
▼
┌───────────────┐
│ financial │
│ ┌───────────┐ │
│ │ wallets │◄──── UNIFICADO
│ └─────┬─────┘ │
│ │ │
│ ┌─────▼─────┐ │
│ │ payments │ │
│ └───────────┘ │
│ │
│ ┌───────────┐ │
│ │subscript. │ │
│ └───────────┘ │
└───────────────┘
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ ml │ │ llm │ │ audit │
│ ┌───────────┐ │ │ ┌───────────┐ │ │ ┌───────────┐ │
│ │ models │ │ │ │ conversat.│ │ │ │audit_logs │ │
│ └─────┬─────┘ │ │ └─────┬─────┘ │ │ └───────────┘ │
│ │ │ │ │ │ │ │
│ ┌─────▼─────┐ │ │ ┌─────▼─────┐ │ │ ┌───────────┐ │
│ │predictions├─┼──────────┼─│ embeddings│ │ │ │sec_events │ │
│ └───────────┘ │ signals │ └───────────┘ │ │ └───────────┘ │
└───────────────┘ └───────────────┘ └───────────────┘
Orden de Ejecución (create-database.sh)
1. Extensions (uuid-ossp, pgcrypto, pg_trgm, btree_gin, vector)
2. Schemas (auth, education, financial, trading, investment, ml, llm, audit)
3. DDL por schema en orden de dependencia:
- 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)
4. Seeds (prod o dev)
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
Notas Importantes
- TIMESTAMPTZ: Todas las columnas de fecha usan timezone (DEC-007)
- gen_random_uuid(): Para generación de UUIDs (no uuid_generate_v4())
- Row Level Security (RLS): Implementar en fase de seguridad
- Particionamiento: Considerar para
predictions,audit_logsen producción - Backups: Configurar backup incremental cada 6 horas
Referencias
- DIRECTIVA-POLITICA-CARGA-LIMPIA.md
- DECISIONES-ARQUITECTONICAS.md
- PLAN-IMPLEMENTACION-CORRECCIONES.md
Última actualización: 2025-12-06 Generado por Requirements-Analyst Agent