trading-platform/orchestration/analisis/coherencia/DDL-COMPLETE-MATRIX.yml
Adrian Flores Cortes 090fe5d278 feat: Add Trading Agents types for frontend
Create comprehensive TypeScript type definitions for Trading Agents (Atlas, Orion, Nova) in the frontend.

- Align with backend trading-agents.client.ts interfaces
- Export AgentType, AgentStatus, BotStatus types
- Define TradingBot, AgentMetrics, AgentPosition, AgentTrade interfaces
- Include utility functions for status mapping and display names
- Full JSDoc documentation for all types
- Export from main types/index.ts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 15:40:04 -06:00

1706 lines
51 KiB
YAML

# ==============================================================================
# DDL Complete Matrix - Trading Platform
# Generated: 2026-01-27
# Total Schemas: 10
# Total Tables: 89
# ==============================================================================
version: "1.0.0"
project: "trading-platform"
generated_at: "2026-01-27T12:00:00Z"
database: "trading_platform"
user: "trading_user"
summary:
total_schemas: 10
total_tables: 89
total_enums: 65
total_functions: 7
total_triggers: 2
schemas:
audit:
description: "Sistema de auditoría y logs"
enums:
- audit.event_type
- audit.severity_level
- audit.log_status
tables:
- name: audit_logs
file: "01-audit_logs.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- event_type audit.event_type
- table_name VARCHAR(100)
- record_id UUID
- changes JSONB
- ip_address INET
- user_agent TEXT
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_audit_logs_user
- idx_audit_logs_event
- idx_audit_logs_table
- idx_audit_logs_created
- name: security_events
file: "02-security_events.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- event_type VARCHAR(50)
- severity audit.severity_level
- ip_address INET
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_security_events_user
- idx_security_events_severity
- idx_security_events_created
- name: system_events
file: "03-system_events.sql"
columns:
- id UUID PRIMARY KEY
- event_type VARCHAR(100)
- service_name VARCHAR(50)
- severity audit.severity_level
- message TEXT
- metadata JSONB
- created_at TIMESTAMPTZ
indexes:
- idx_system_events_service
- idx_system_events_severity
- idx_system_events_created
- name: trading_audit
file: "04-trading_audit.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- bot_id UUID REFERENCES trading.bots
- order_id UUID REFERENCES trading.orders
- action VARCHAR(50)
- details JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: trading.bots
- references: trading.orders
indexes:
- idx_trading_audit_user
- idx_trading_audit_bot
- idx_trading_audit_order
- idx_trading_audit_created
- name: api_request_logs
file: "05-api_request_logs.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- endpoint VARCHAR(255)
- method VARCHAR(10)
- status_code INTEGER
- response_time_ms INTEGER
- ip_address INET
- user_agent TEXT
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_api_logs_user
- idx_api_logs_endpoint
- idx_api_logs_status
- idx_api_logs_created
- name: data_access_logs
file: "06-data_access_logs.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- table_name VARCHAR(100)
- operation VARCHAR(20)
- record_id UUID
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_data_access_user
- idx_data_access_table
- idx_data_access_created
- name: compliance_logs
file: "07-compliance_logs.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- compliance_type VARCHAR(50)
- status audit.log_status
- details JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_compliance_user
- idx_compliance_type
- idx_compliance_status
- idx_compliance_created
functions: []
triggers: []
auth:
description: "Autenticación y autorización"
enums:
- auth.user_status
- auth.user_role
- auth.oauth_provider
- auth.phone_channel
- auth.auth_event_type
- auth.mfa_method
tables:
- name: users
file: "01-users.sql"
columns:
- id UUID PRIMARY KEY
- email CITEXT UNIQUE
- email_verified BOOLEAN
- email_verified_at TIMESTAMPTZ
- password_hash VARCHAR(255)
- status auth.user_status
- role auth.user_role
- mfa_enabled BOOLEAN
- mfa_method auth.mfa_method
- mfa_secret VARCHAR(255)
- phone_number VARCHAR(20)
- phone_verified BOOLEAN
- last_login_at TIMESTAMPTZ
- last_login_ip INET
- failed_login_attempts INTEGER
- locked_until TIMESTAMPTZ
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys: []
indexes:
- idx_users_email
- idx_users_status
- idx_users_role
- idx_users_last_login
- idx_users_created_at
- name: user_profiles
file: "02-user_profiles.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- first_name VARCHAR(100)
- last_name VARCHAR(100)
- avatar_url TEXT
- timezone VARCHAR(50)
- language VARCHAR(10)
- country VARCHAR(2)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_user_profiles_user_id
- name: oauth_accounts
file: "03-oauth_accounts.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- provider auth.oauth_provider
- provider_account_id VARCHAR(255)
- access_token TEXT
- refresh_token TEXT
- token_expires_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_oauth_user
- idx_oauth_provider
- name: sessions
file: "04-sessions.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- token VARCHAR(255) UNIQUE
- refresh_token VARCHAR(255)
- ip_address INET
- user_agent TEXT
- expires_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_sessions_user
- idx_sessions_token
- idx_sessions_expires
- name: email_verifications
file: "05-email_verifications.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- token VARCHAR(255) UNIQUE
- expires_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_email_verifications_user
- idx_email_verifications_token
- name: phone_verifications
file: "06-phone_verifications.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- phone_number VARCHAR(20)
- code VARCHAR(6)
- channel auth.phone_channel
- expires_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_phone_verifications_user
- idx_phone_verifications_phone
- name: password_reset_tokens
file: "07-password_reset_tokens.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- token VARCHAR(255) UNIQUE
- expires_at TIMESTAMPTZ
- used_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_password_reset_user
- idx_password_reset_token
- name: auth_logs
file: "08-auth_logs.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- event_type auth.auth_event_type
- ip_address INET
- user_agent TEXT
- success BOOLEAN
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_auth_logs_user
- idx_auth_logs_event
- idx_auth_logs_created
- name: login_attempts
file: "09-login_attempts.sql"
columns:
- id UUID PRIMARY KEY
- email CITEXT
- ip_address INET
- success BOOLEAN
- failure_reason VARCHAR(100)
- created_at TIMESTAMPTZ
indexes:
- idx_login_attempts_email
- idx_login_attempts_ip
- idx_login_attempts_created
- name: rate_limiting_config
file: "10-rate_limiting_config.sql"
columns:
- id UUID PRIMARY KEY
- endpoint VARCHAR(255)
- max_requests INTEGER
- window_seconds INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_rate_limiting_endpoint
- name: notifications
file: "11-notifications.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- type VARCHAR(50)
- title VARCHAR(255)
- message TEXT
- read BOOLEAN
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_notifications_user
- idx_notifications_read
- idx_notifications_created
- name: user_push_tokens
file: "12-user_push_tokens.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- platform VARCHAR(20)
- token TEXT UNIQUE
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_user_push_tokens_user
- idx_user_push_tokens_token
functions:
- name: update_updated_at
file: "01-update_updated_at.sql"
- name: log_auth_event
file: "02-log_auth_event.sql"
- name: cleanup_expired_sessions
file: "03-cleanup_expired_sessions.sql"
- name: create_user_profile_trigger
file: "04-create_user_profile_trigger.sql"
triggers:
- trigger_users_updated_at
- trigger_create_user_profile
education:
description: "Sistema educativo y gamification"
enums:
- education.difficulty_level
- education.course_status
- education.enrollment_status
- education.lesson_content_type
- education.question_type
- education.achievement_type
tables:
- name: categories
file: "01-categories.sql"
columns:
- id UUID PRIMARY KEY
- name VARCHAR(100) UNIQUE
- slug VARCHAR(100) UNIQUE
- description TEXT
- icon VARCHAR(50)
- sort_order INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_categories_slug
- idx_categories_sort_order
- name: courses
file: "02-courses.sql"
columns:
- id UUID PRIMARY KEY
- category_id UUID REFERENCES education.categories
- title VARCHAR(255)
- slug VARCHAR(255) UNIQUE
- description TEXT
- difficulty education.difficulty_level
- status education.course_status
- thumbnail_url TEXT
- estimated_hours INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: education.categories
indexes:
- idx_courses_category
- idx_courses_slug
- idx_courses_status
- name: modules
file: "03-modules.sql"
columns:
- id UUID PRIMARY KEY
- course_id UUID REFERENCES education.courses
- title VARCHAR(255)
- description TEXT
- sort_order INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: education.courses
indexes:
- idx_modules_course
- idx_modules_sort_order
- name: lessons
file: "04-lessons.sql"
columns:
- id UUID PRIMARY KEY
- module_id UUID REFERENCES education.modules
- title VARCHAR(255)
- content TEXT
- content_type education.lesson_content_type
- video_url TEXT
- duration_minutes INTEGER
- sort_order INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: education.modules
indexes:
- idx_lessons_module
- idx_lessons_sort_order
- name: enrollments
file: "05-enrollments.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- course_id UUID REFERENCES education.courses
- status education.enrollment_status
- enrolled_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
- expires_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: education.courses
indexes:
- idx_enrollments_user
- idx_enrollments_course
- idx_enrollments_status
- name: progress
file: "06-progress.sql"
columns:
- id UUID PRIMARY KEY
- enrollment_id UUID REFERENCES education.enrollments
- lesson_id UUID REFERENCES education.lessons
- completed BOOLEAN
- completed_at TIMESTAMPTZ
- time_spent_seconds INTEGER
foreign_keys:
- references: education.enrollments
- references: education.lessons
indexes:
- idx_progress_enrollment
- idx_progress_lesson
- name: quizzes
file: "07-quizzes.sql"
columns:
- id UUID PRIMARY KEY
- lesson_id UUID REFERENCES education.lessons
- title VARCHAR(255)
- description TEXT
- passing_score INTEGER
- time_limit_minutes INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: education.lessons
indexes:
- idx_quizzes_lesson
- name: quiz_questions
file: "08-quiz_questions.sql"
columns:
- id UUID PRIMARY KEY
- quiz_id UUID REFERENCES education.quizzes
- question_type education.question_type
- question TEXT
- options JSONB
- correct_answer JSONB
- explanation TEXT
- points INTEGER
- sort_order INTEGER
foreign_keys:
- references: education.quizzes
indexes:
- idx_quiz_questions_quiz
- name: quiz_attempts
file: "09-quiz_attempts.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- quiz_id UUID REFERENCES education.quizzes
- score INTEGER
- max_score INTEGER
- passed BOOLEAN
- answers JSONB
- started_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: education.quizzes
indexes:
- idx_quiz_attempts_user
- idx_quiz_attempts_quiz
- name: certificates
file: "10-certificates.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- course_id UUID REFERENCES education.courses
- certificate_number VARCHAR(50) UNIQUE
- issued_at TIMESTAMPTZ
- pdf_url TEXT
foreign_keys:
- references: auth.users
- references: education.courses
indexes:
- idx_certificates_user
- idx_certificates_course
- idx_certificates_number
- name: user_achievements
file: "11-user_achievements.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- achievement_type education.achievement_type
- title VARCHAR(255)
- description TEXT
- icon VARCHAR(50)
- earned_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_user_achievements_user
- idx_user_achievements_type
- name: user_gamification_profile
file: "12-user_gamification_profile.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users UNIQUE
- level INTEGER
- experience_points INTEGER
- current_streak INTEGER
- longest_streak INTEGER
- total_courses_completed INTEGER
- total_quizzes_passed INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_gamification_user
- idx_gamification_level
- name: user_activity_log
file: "13-user_activity_log.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- activity_type VARCHAR(50)
- xp_earned INTEGER
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_activity_log_user
- idx_activity_log_type
- idx_activity_log_created
- name: course_reviews
file: "14-course_reviews.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- course_id UUID REFERENCES education.courses
- rating INTEGER
- review TEXT
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: education.courses
indexes:
- idx_course_reviews_user
- idx_course_reviews_course
- idx_course_reviews_rating
- name: videos
file: "15-videos.sql"
columns:
- id UUID PRIMARY KEY
- lesson_id UUID REFERENCES education.lessons
- title VARCHAR(255)
- url TEXT
- thumbnail_url TEXT
- duration_seconds INTEGER
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: education.lessons
indexes:
- idx_videos_lesson
functions: []
triggers: []
financial:
description: "Sistema financiero, wallets y pagos"
enums:
- financial.wallet_type
- financial.wallet_status
- financial.transaction_type
- financial.transaction_status
- financial.subscription_plan
- financial.subscription_status
- financial.currency_code
- financial.payment_method
- financial.payment_status
- financial.invoice_type
- financial.invoice_status
- financial.audit_action
tables:
- name: wallets
file: "01-wallets.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- wallet_type financial.wallet_type
- status financial.wallet_status
- balance DECIMAL(20,8)
- available_balance DECIMAL(20,8)
- pending_balance DECIMAL(20,8)
- currency financial.currency_code
- stripe_account_id VARCHAR(255)
- stripe_customer_id VARCHAR(255)
- daily_withdrawal_limit DECIMAL(15,2)
- monthly_withdrawal_limit DECIMAL(15,2)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_wallets_user_id
- idx_wallets_wallet_type
- idx_wallets_status
- idx_wallets_currency
- name: wallet_transactions
file: "02-wallet_transactions.sql"
columns:
- id UUID PRIMARY KEY
- wallet_id UUID REFERENCES financial.wallets
- transaction_type financial.transaction_type
- amount DECIMAL(20,8)
- balance_after DECIMAL(20,8)
- status financial.transaction_status
- reference_id UUID
- metadata JSONB
- created_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
foreign_keys:
- references: financial.wallets
indexes:
- idx_wallet_transactions_wallet
- idx_wallet_transactions_type
- idx_wallet_transactions_status
- idx_wallet_transactions_created
- name: subscriptions
file: "03-subscriptions.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- plan financial.subscription_plan
- status financial.subscription_status
- stripe_subscription_id VARCHAR(255)
- current_period_start TIMESTAMPTZ
- current_period_end TIMESTAMPTZ
- cancel_at_period_end BOOLEAN
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_subscriptions_user
- idx_subscriptions_status
- idx_subscriptions_stripe_id
- name: invoices
file: "04-invoices.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- subscription_id UUID REFERENCES financial.subscriptions
- invoice_type financial.invoice_type
- status financial.invoice_status
- amount DECIMAL(15,2)
- currency financial.currency_code
- stripe_invoice_id VARCHAR(255)
- due_date TIMESTAMPTZ
- paid_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: financial.subscriptions
indexes:
- idx_invoices_user
- idx_invoices_subscription
- idx_invoices_status
- idx_invoices_stripe_id
- name: payments
file: "05-payments.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- invoice_id UUID REFERENCES financial.invoices
- amount DECIMAL(15,2)
- currency financial.currency_code
- payment_method financial.payment_method
- status financial.payment_status
- stripe_payment_id VARCHAR(255)
- metadata JSONB
- created_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: financial.invoices
indexes:
- idx_payments_user
- idx_payments_invoice
- idx_payments_status
- idx_payments_stripe_id
- name: wallet_audit_log
file: "06-wallet_audit_log.sql"
columns:
- id UUID PRIMARY KEY
- wallet_id UUID REFERENCES financial.wallets
- action financial.audit_action
- old_values JSONB
- new_values JSONB
- performed_by UUID REFERENCES auth.users
- created_at TIMESTAMPTZ
foreign_keys:
- references: financial.wallets
- references: auth.users
indexes:
- idx_wallet_audit_wallet
- idx_wallet_audit_action
- idx_wallet_audit_created
- name: currency_exchange_rates
file: "07-currency_exchange_rates.sql"
columns:
- id UUID PRIMARY KEY
- from_currency financial.currency_code
- to_currency financial.currency_code
- rate DECIMAL(18,8)
- effective_at TIMESTAMPTZ
- created_at TIMESTAMPTZ
indexes:
- idx_currency_rates_from_to
- idx_currency_rates_effective
- name: wallet_limits
file: "08-wallet_limits.sql"
columns:
- id UUID PRIMARY KEY
- wallet_id UUID REFERENCES financial.wallets UNIQUE
- daily_deposit_limit DECIMAL(15,2)
- daily_withdrawal_limit DECIMAL(15,2)
- monthly_deposit_limit DECIMAL(15,2)
- monthly_withdrawal_limit DECIMAL(15,2)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: financial.wallets
indexes:
- idx_wallet_limits_wallet
- name: customers
file: "09-customers.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users UNIQUE
- stripe_customer_id VARCHAR(255) UNIQUE
- email CITEXT
- metadata JSONB
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_customers_user
- idx_customers_stripe_id
- name: payment_methods
file: "10-payment_methods.sql"
columns:
- id UUID PRIMARY KEY
- customer_id UUID REFERENCES financial.customers
- type financial.payment_method
- stripe_payment_method_id VARCHAR(255)
- last_four VARCHAR(4)
- is_default BOOLEAN
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: financial.customers
indexes:
- idx_payment_methods_customer
- idx_payment_methods_stripe_id
functions:
- name: update_wallet_balance
file: "01-update_wallet_balance.sql"
- name: validate_transaction
file: "02-validate_transaction.sql"
- name: triggers
file: "03-triggers.sql"
triggers: []
investment:
description: "Sistema de inversiones PAMM"
enums:
- investment.trading_agent
- investment.risk_profile
- investment.account_status
- investment.distribution_frequency
- investment.transaction_type
- investment.transaction_status
tables:
- name: products
file: "01-products.sql"
columns:
- id UUID PRIMARY KEY
- agent investment.trading_agent
- name VARCHAR(100)
- description TEXT
- min_investment DECIMAL(15,2)
- expected_return_min DECIMAL(5,2)
- expected_return_max DECIMAL(5,2)
- risk_profile investment.risk_profile
- active BOOLEAN
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_products_agent
- idx_products_active
- name: risk_questionnaire
file: "02-risk_questionnaire.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- answers JSONB
- calculated_profile investment.risk_profile
- score INTEGER
- created_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_risk_questionnaire_user
- name: accounts
file: "03-accounts.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- product_id UUID REFERENCES investment.products
- wallet_id UUID REFERENCES financial.wallets
- account_number VARCHAR(20) UNIQUE
- status investment.account_status
- balance DECIMAL(20,8)
- invested_capital DECIMAL(20,8)
- accumulated_returns DECIMAL(20,8)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
- references: investment.products
- references: financial.wallets
indexes:
- idx_accounts_user
- idx_accounts_product
- idx_accounts_status
- idx_accounts_account_number
- name: distributions
file: "04-distributions.sql"
columns:
- id UUID PRIMARY KEY
- account_id UUID REFERENCES investment.accounts
- period_start TIMESTAMPTZ
- period_end TIMESTAMPTZ
- gross_profit DECIMAL(20,8)
- platform_fee DECIMAL(20,8)
- net_profit DECIMAL(20,8)
- roi_percentage DECIMAL(8,4)
- created_at TIMESTAMPTZ
foreign_keys:
- references: investment.accounts
indexes:
- idx_distributions_account
- idx_distributions_period
- name: transactions
file: "05-transactions.sql"
columns:
- id UUID PRIMARY KEY
- account_id UUID REFERENCES investment.accounts
- transaction_type investment.transaction_type
- amount DECIMAL(20,8)
- status investment.transaction_status
- balance_after DECIMAL(20,8)
- created_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
foreign_keys:
- references: investment.accounts
indexes:
- idx_transactions_account
- idx_transactions_type
- idx_transactions_status
- idx_transactions_created
- name: withdrawal_requests
file: "06-withdrawal_requests.sql"
columns:
- id UUID PRIMARY KEY
- account_id UUID REFERENCES investment.accounts
- amount DECIMAL(20,8)
- status investment.transaction_status
- requested_at TIMESTAMPTZ
- processed_at TIMESTAMPTZ
foreign_keys:
- references: investment.accounts
indexes:
- idx_withdrawal_requests_account
- idx_withdrawal_requests_status
- name: daily_performance
file: "07-daily_performance.sql"
columns:
- id UUID PRIMARY KEY
- product_id UUID REFERENCES investment.products
- date DATE UNIQUE
- daily_return DECIMAL(8,4)
- cumulative_return DECIMAL(8,4)
- nav DECIMAL(20,8)
- created_at TIMESTAMPTZ
foreign_keys:
- references: investment.products
indexes:
- idx_daily_performance_product
- idx_daily_performance_date
- name: distribution_history
file: "08-distribution_history.sql"
columns:
- id UUID PRIMARY KEY
- distribution_id UUID REFERENCES investment.distributions
- action VARCHAR(50)
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: investment.distributions
indexes:
- idx_distribution_history_distribution
- name: distribution_runs
file: "09-distribution_runs.sql"
columns:
- id UUID PRIMARY KEY
- period_start TIMESTAMPTZ
- period_end TIMESTAMPTZ
- total_accounts INTEGER
- total_distributed DECIMAL(20,8)
- status VARCHAR(20)
- started_at TIMESTAMPTZ
- completed_at TIMESTAMPTZ
indexes:
- idx_distribution_runs_period
- idx_distribution_runs_status
functions: []
triggers: []
llm:
description: "Sistema de conversación con LLM"
enums:
- llm.conversation_status
- llm.message_role
- llm.model_provider
tables:
- name: conversations
file: "01-conversations.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- title VARCHAR(255)
- status llm.conversation_status
- metadata JSONB
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_conversations_user
- idx_conversations_status
- name: messages
file: "02-messages.sql"
columns:
- id UUID PRIMARY KEY
- conversation_id UUID REFERENCES llm.conversations
- role llm.message_role
- content TEXT
- model_provider llm.model_provider
- tokens_used INTEGER
- created_at TIMESTAMPTZ
foreign_keys:
- references: llm.conversations
indexes:
- idx_messages_conversation
- idx_messages_created
- name: user_preferences
file: "03-user_preferences.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users UNIQUE
- preferred_model VARCHAR(50)
- temperature DECIMAL(3,2)
- max_tokens INTEGER
- system_prompt TEXT
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_user_preferences_user
- name: user_memory
file: "04-user_memory.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- memory_key VARCHAR(100)
- memory_value JSONB
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_user_memory_user
- idx_user_memory_key
- name: embeddings
file: "05-embeddings.sql"
columns:
- id UUID PRIMARY KEY
- conversation_id UUID REFERENCES llm.conversations
- message_id UUID REFERENCES llm.messages
- embedding vector(1536)
- created_at TIMESTAMPTZ
foreign_keys:
- references: llm.conversations
- references: llm.messages
indexes:
- idx_embeddings_conversation
- idx_embeddings_message
functions: []
triggers: []
market_data:
description: "Datos de mercado OHLCV"
enums:
- market_data.data_source
- market_data.sync_status
tables:
- name: tickers
file: "01-tickers.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20) UNIQUE
- exchange VARCHAR(50)
- base_currency VARCHAR(10)
- quote_currency VARCHAR(10)
- active BOOLEAN
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_tickers_symbol
- idx_tickers_exchange
- idx_tickers_active
- name: ohlcv_5m
file: "02-ohlcv_5m.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- timestamp TIMESTAMPTZ
- open DECIMAL(18,8)
- high DECIMAL(18,8)
- low DECIMAL(18,8)
- close DECIMAL(18,8)
- volume DECIMAL(20,8)
indexes:
- idx_ohlcv_5m_symbol_timestamp
- name: ohlcv_15m
file: "03-ohlcv_15m.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- timestamp TIMESTAMPTZ
- open DECIMAL(18,8)
- high DECIMAL(18,8)
- low DECIMAL(18,8)
- close DECIMAL(18,8)
- volume DECIMAL(20,8)
indexes:
- idx_ohlcv_15m_symbol_timestamp
- name: staging
file: "04-staging.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- timestamp TIMESTAMPTZ
- data JSONB
- source market_data.data_source
- status market_data.sync_status
- created_at TIMESTAMPTZ
indexes:
- idx_staging_symbol
- idx_staging_status
functions: []
triggers: []
ml:
description: "Sistema de Machine Learning y predicciones"
enums:
- ml.model_type
- ml.framework
- ml.model_status
- ml.prediction_type
- ml.prediction_result
- ml.outcome_status
tables:
- name: models
file: "01-models.sql"
columns:
- id UUID PRIMARY KEY
- name VARCHAR(100) UNIQUE
- model_type ml.model_type
- framework ml.framework
- status ml.model_status
- description TEXT
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_models_name
- idx_models_status
- name: model_versions
file: "02-model_versions.sql"
columns:
- id UUID PRIMARY KEY
- model_id UUID REFERENCES ml.models
- version VARCHAR(20)
- artifact_path TEXT
- metrics JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: ml.models
indexes:
- idx_model_versions_model
- idx_model_versions_version
- name: predictions
file: "03-predictions.sql"
columns:
- id UUID PRIMARY KEY
- model_version_id UUID REFERENCES ml.model_versions
- symbol VARCHAR(20)
- prediction_type ml.prediction_type
- result ml.prediction_result
- confidence DECIMAL(5,4)
- target_price DECIMAL(18,8)
- timeframe VARCHAR(10)
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: ml.model_versions
indexes:
- idx_predictions_model_version
- idx_predictions_symbol
- idx_predictions_created
- name: prediction_outcomes
file: "04-prediction_outcomes.sql"
columns:
- id UUID PRIMARY KEY
- prediction_id UUID REFERENCES ml.predictions
- outcome_status ml.outcome_status
- actual_price DECIMAL(18,8)
- evaluated_at TIMESTAMPTZ
foreign_keys:
- references: ml.predictions
indexes:
- idx_prediction_outcomes_prediction
- idx_prediction_outcomes_status
- name: feature_store
file: "05-feature_store.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- timestamp TIMESTAMPTZ
- features JSONB
- created_at TIMESTAMPTZ
indexes:
- idx_feature_store_symbol_timestamp
- name: llm_predictions
file: "06-llm_predictions.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- model_provider VARCHAR(50)
- prediction ml.prediction_result
- reasoning TEXT
- confidence DECIMAL(5,4)
- created_at TIMESTAMPTZ
indexes:
- idx_llm_predictions_symbol
- idx_llm_predictions_created
- name: llm_prediction_outcomes
file: "07-llm_prediction_outcomes.sql"
columns:
- id UUID PRIMARY KEY
- llm_prediction_id UUID REFERENCES ml.llm_predictions
- outcome_status ml.outcome_status
- actual_price DECIMAL(18,8)
- evaluated_at TIMESTAMPTZ
foreign_keys:
- references: ml.llm_predictions
indexes:
- idx_llm_prediction_outcomes_prediction
- name: llm_decisions
file: "08-llm_decisions.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots
- order_id UUID REFERENCES trading.orders
- reasoning TEXT
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
- references: trading.orders
indexes:
- idx_llm_decisions_bot
- idx_llm_decisions_order
- name: risk_events
file: "09-risk_events.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots
- event_type VARCHAR(50)
- severity VARCHAR(20)
- description TEXT
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
indexes:
- idx_risk_events_bot
- idx_risk_events_severity
- idx_risk_events_created
- name: backtest_runs
file: "10-backtest_runs.sql"
columns:
- id UUID PRIMARY KEY
- model_version_id UUID REFERENCES ml.model_versions
- start_date DATE
- end_date DATE
- initial_capital DECIMAL(20,8)
- final_capital DECIMAL(20,8)
- total_return DECIMAL(8,4)
- sharpe_ratio DECIMAL(6,4)
- max_drawdown DECIMAL(6,4)
- total_trades INTEGER
- win_rate DECIMAL(5,4)
- metadata JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: ml.model_versions
indexes:
- idx_backtest_runs_model_version
- idx_backtest_runs_created
- name: llm_signals
file: "11-llm_signals.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- signal_type VARCHAR(20)
- reasoning TEXT
- confidence DECIMAL(5,4)
- metadata JSONB
- created_at TIMESTAMPTZ
indexes:
- idx_llm_signals_symbol
- idx_llm_signals_created
functions: []
triggers: []
portfolio:
description: "Gestión de portafolios"
enums:
- portfolio.risk_profile
- portfolio.goal_status
- portfolio.rebalance_action
- portfolio.allocation_status
tables:
- name: portfolios
file: "01-portfolios.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- name VARCHAR(100)
- description TEXT
- risk_profile portfolio.risk_profile
- total_value DECIMAL(20,8)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_portfolios_user
- name: portfolio_allocations
file: "02-portfolio_allocations.sql"
columns:
- id UUID PRIMARY KEY
- portfolio_id UUID REFERENCES portfolio.portfolios
- symbol VARCHAR(20)
- target_percentage DECIMAL(5,2)
- current_percentage DECIMAL(5,2)
- current_value DECIMAL(20,8)
- status portfolio.allocation_status
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: portfolio.portfolios
indexes:
- idx_portfolio_allocations_portfolio
- idx_portfolio_allocations_symbol
- name: portfolio_goals
file: "03-portfolio_goals.sql"
columns:
- id UUID PRIMARY KEY
- portfolio_id UUID REFERENCES portfolio.portfolios
- goal_name VARCHAR(100)
- target_amount DECIMAL(20,8)
- target_date DATE
- status portfolio.goal_status
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: portfolio.portfolios
indexes:
- idx_portfolio_goals_portfolio
- idx_portfolio_goals_status
- name: rebalance_history
file: "04-rebalance_history.sql"
columns:
- id UUID PRIMARY KEY
- portfolio_id UUID REFERENCES portfolio.portfolios
- symbol VARCHAR(20)
- action portfolio.rebalance_action
- quantity DECIMAL(20,8)
- price DECIMAL(18,8)
- executed_at TIMESTAMPTZ
foreign_keys:
- references: portfolio.portfolios
indexes:
- idx_rebalance_history_portfolio
- idx_rebalance_history_executed
- name: portfolio_snapshots
file: "05-portfolio_snapshots.sql"
columns:
- id UUID PRIMARY KEY
- portfolio_id UUID REFERENCES portfolio.portfolios
- snapshot_date DATE
- total_value DECIMAL(20,8)
- daily_return DECIMAL(8,4)
- allocations JSONB
- created_at TIMESTAMPTZ
foreign_keys:
- references: portfolio.portfolios
indexes:
- idx_portfolio_snapshots_portfolio
- idx_portfolio_snapshots_date
functions: []
triggers: []
trading:
description: "Sistema de trading y bots"
enums:
- trading.order_type
- trading.order_status
- trading.order_side
- trading.position_status
- trading.signal_type
- trading.confidence_level
- trading.timeframe
- trading.bot_type
- trading.bot_status
tables:
- name: symbols
file: "01-symbols.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20) UNIQUE
- base_currency VARCHAR(10)
- quote_currency VARCHAR(10)
- exchange VARCHAR(50)
- min_order_size DECIMAL(18,8)
- max_order_size DECIMAL(18,8)
- price_precision INTEGER
- quantity_precision INTEGER
- active BOOLEAN
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
indexes:
- idx_symbols_symbol
- idx_symbols_exchange
- idx_symbols_active
- name: watchlists
file: "02-watchlists.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- name VARCHAR(100)
- description TEXT
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_watchlists_user
- name: watchlist_items
file: "03-watchlist_items.sql"
columns:
- id UUID PRIMARY KEY
- watchlist_id UUID REFERENCES trading.watchlists
- symbol VARCHAR(20)
- sort_order INTEGER
- created_at TIMESTAMPTZ
foreign_keys:
- references: trading.watchlists
indexes:
- idx_watchlist_items_watchlist
- idx_watchlist_items_symbol
- name: bots
file: "04-bots.sql"
columns:
- id UUID PRIMARY KEY
- user_id UUID REFERENCES auth.users
- name VARCHAR(100)
- bot_type trading.bot_type
- status trading.bot_status
- symbols VARCHAR(20)[]
- timeframe trading.timeframe
- initial_capital DECIMAL(20,8)
- current_capital DECIMAL(20,8)
- max_position_size_pct DECIMAL(5,2)
- max_daily_loss_pct DECIMAL(5,2)
- strategy_type VARCHAR(50)
- strategy_config JSONB
- total_trades INTEGER
- winning_trades INTEGER
- total_profit_loss DECIMAL(20,8)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: auth.users
indexes:
- idx_bots_user
- idx_bots_status
- idx_bots_type
- name: orders
file: "05-orders.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots
- symbol VARCHAR(20)
- order_type trading.order_type
- order_side trading.order_side
- status trading.order_status
- price DECIMAL(18,8)
- quantity DECIMAL(18,8)
- filled_quantity DECIMAL(18,8)
- average_price DECIMAL(18,8)
- exchange_order_id VARCHAR(100)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
indexes:
- idx_orders_bot
- idx_orders_symbol
- idx_orders_status
- idx_orders_created
- name: positions
file: "06-positions.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots
- symbol VARCHAR(20)
- status trading.position_status
- entry_price DECIMAL(18,8)
- current_price DECIMAL(18,8)
- quantity DECIMAL(18,8)
- unrealized_pnl DECIMAL(20,8)
- realized_pnl DECIMAL(20,8)
- opened_at TIMESTAMPTZ
- closed_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
indexes:
- idx_positions_bot
- idx_positions_symbol
- idx_positions_status
- name: trades
file: "07-trades.sql"
columns:
- id UUID PRIMARY KEY
- order_id UUID REFERENCES trading.orders
- position_id UUID REFERENCES trading.positions
- price DECIMAL(18,8)
- quantity DECIMAL(18,8)
- fee DECIMAL(18,8)
- executed_at TIMESTAMPTZ
foreign_keys:
- references: trading.orders
- references: trading.positions
indexes:
- idx_trades_order
- idx_trades_position
- idx_trades_executed
- name: signals
file: "08-signals.sql"
columns:
- id UUID PRIMARY KEY
- symbol VARCHAR(20)
- signal_type trading.signal_type
- confidence trading.confidence_level
- price DECIMAL(18,8)
- metadata JSONB
- created_at TIMESTAMPTZ
indexes:
- idx_signals_symbol
- idx_signals_type
- idx_signals_created
- name: trading_metrics
file: "09-trading_metrics.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots
- date DATE
- total_trades INTEGER
- winning_trades INTEGER
- losing_trades INTEGER
- gross_profit DECIMAL(20,8)
- gross_loss DECIMAL(20,8)
- net_profit DECIMAL(20,8)
- win_rate DECIMAL(5,4)
- profit_factor DECIMAL(6,4)
- created_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
indexes:
- idx_trading_metrics_bot
- idx_trading_metrics_date
- name: paper_balances
file: "10-paper_balances.sql"
columns:
- id UUID PRIMARY KEY
- bot_id UUID REFERENCES trading.bots UNIQUE
- balance DECIMAL(20,8)
- equity DECIMAL(20,8)
- created_at TIMESTAMPTZ
- updated_at TIMESTAMPTZ
foreign_keys:
- references: trading.bots
indexes:
- idx_paper_balances_bot
functions: []
triggers: []
# ==============================================================================
# Summary Statistics
# ==============================================================================
statistics:
by_schema:
audit: 7
auth: 13
education: 15
financial: 10
investment: 9
llm: 5
market_data: 4
ml: 11
portfolio: 5
trading: 10
foreign_key_relationships:
auth.users: "Referenced by 40+ tables across all schemas"
trading.bots: "Referenced by orders, positions, ml.llm_decisions, ml.risk_events"
financial.wallets: "Referenced by transactions, audit_log, investment.accounts"
investment.products: "Referenced by accounts, daily_performance"
education.courses: "Referenced by modules, enrollments, reviews, certificates"
critical_tables:
- auth.users (foundation for all user operations)
- financial.wallets (financial foundation)
- trading.bots (trading foundation)
- investment.accounts (investment foundation)
- ml.models (ML foundation)