69 lines
3.2 KiB
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';
|