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>
1706 lines
51 KiB
YAML
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)
|