trading-platform-database/ddl/schemas/llm/tables/03-user_preferences.sql

69 lines
3.2 KiB
SQL

-- =====================================================
-- LLM SCHEMA - USER PREFERENCES TABLE
-- =====================================================
-- Description: User preferences for LLM agent interactions
-- Schema: llm
-- Author: Database Agent
-- Date: 2025-12-06
-- =====================================================
CREATE TABLE llm.user_preferences (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL UNIQUE REFERENCES auth.users(id) ON DELETE CASCADE,
-- Preferencias de comunicación
language VARCHAR(5) DEFAULT 'es', -- ISO 639-1
tone llm.communication_tone DEFAULT 'professional',
verbosity llm.verbosity_level DEFAULT 'normal',
-- Preferencias de trading
preferred_symbols VARCHAR(20)[] DEFAULT '{}',
preferred_timeframe VARCHAR(10) DEFAULT '1h',
risk_tolerance VARCHAR(20) DEFAULT 'moderate', -- conservative, moderate, aggressive
-- Preferencias de notificación
proactive_alerts BOOLEAN DEFAULT true,
alert_frequency llm.alert_frequency DEFAULT 'normal',
notification_hours_start TIME DEFAULT '08:00:00',
notification_hours_end TIME DEFAULT '22:00:00',
timezone VARCHAR(50) DEFAULT 'America/Mexico_City',
-- Intereses
topics_of_interest TEXT[] DEFAULT '{}', -- trading, education, news, market_analysis
-- Nivel de experiencia (para personalizar explicaciones)
trading_experience_level VARCHAR(20) DEFAULT 'beginner', -- beginner, intermediate, advanced, expert
-- Preferencias de análisis
preferred_analysis_types TEXT[] DEFAULT '{}', -- technical, fundamental, sentiment, onchain
-- Formato de respuestas
include_charts BOOLEAN DEFAULT true,
include_data_tables BOOLEAN DEFAULT true,
include_explanations BOOLEAN DEFAULT true,
-- Metadata
onboarding_completed BOOLEAN DEFAULT false,
onboarding_completed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
-- Índices
CREATE UNIQUE INDEX idx_user_preferences_user ON llm.user_preferences(user_id);
CREATE INDEX idx_user_preferences_language ON llm.user_preferences(language);
-- Comentarios
COMMENT ON TABLE llm.user_preferences IS 'User preferences for personalized LLM agent interactions';
COMMENT ON COLUMN llm.user_preferences.language IS 'Preferred language for responses (ISO 639-1 code)';
COMMENT ON COLUMN llm.user_preferences.tone IS 'Communication style: casual, professional, or technical';
COMMENT ON COLUMN llm.user_preferences.verbosity IS 'Response length preference: brief, normal, or detailed';
COMMENT ON COLUMN llm.user_preferences.preferred_symbols IS 'Trading pairs user is most interested in';
COMMENT ON COLUMN llm.user_preferences.proactive_alerts IS 'Whether agent should send proactive notifications';
COMMENT ON COLUMN llm.user_preferences.alert_frequency IS 'How often to receive alerts: low, normal, or high';
COMMENT ON COLUMN llm.user_preferences.notification_hours_start IS 'Start of notification window in user timezone';
COMMENT ON COLUMN llm.user_preferences.notification_hours_end IS 'End of notification window in user timezone';
COMMENT ON COLUMN llm.user_preferences.topics_of_interest IS 'Topics user wants to learn about or discuss';
COMMENT ON COLUMN llm.user_preferences.trading_experience_level IS 'User experience level for tailoring explanations';