-- 投资顾问 Agent 专用表(Sprint1~3 · 不含共用底座 01 已建表) -- 执行:mysql jinrong_agent < scripts/agent/migrate-advisor-agent-sprint1-3.sql USE jinrong_agent; CREATE TABLE IF NOT EXISTS compliance_rule ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, rule_code VARCHAR(32) NOT NULL UNIQUE, rule_type VARCHAR(16) NOT NULL, pattern VARCHAR(1024) NOT NULL, severity VARCHAR(8) NOT NULL, category VARCHAR(32) NOT NULL, suggestion VARCHAR(2048) NULL, is_active TINYINT(1) NOT NULL DEFAULT 1, priority INT NOT NULL DEFAULT 100, created_by VARCHAR(64) NOT NULL, updated_by VARCHAR(64) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_type_active (rule_type, is_active), KEY idx_severity (severity), KEY idx_category (category) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS compliance_check_log ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, check_id VARCHAR(64) NOT NULL UNIQUE, trace_id VARCHAR(64) NOT NULL, advisor_id VARCHAR(64) NOT NULL, scene VARCHAR(32) NULL, input_text TEXT NOT NULL, input_hash VARCHAR(64) NULL, risk_level VARCHAR(8) NOT NULL, hit_count INT NOT NULL DEFAULT 0, hit_details JSON NULL, ai_analysis JSON NULL, ai_degraded TINYINT(1) NOT NULL DEFAULT 0, latency_ms INT NULL, customer_risk_level VARCHAR(4) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_trace (trace_id), KEY idx_advisor_time (advisor_id, created_at), KEY idx_risk_time (risk_level, created_at), KEY idx_scene_time (scene, created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS copy_track_log ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, track_id VARCHAR(64) NOT NULL UNIQUE, trace_id VARCHAR(64) NOT NULL, advisor_id VARCHAR(64) NOT NULL, content_type VARCHAR(32) NOT NULL, content_summary VARCHAR(512) NOT NULL, content_hash VARCHAR(64) NOT NULL, source_type VARCHAR(32) NOT NULL, source_id VARCHAR(64) NULL, compliance_check_id VARCHAR(64) NULL, compliance_risk_level VARCHAR(8) NOT NULL, warn_confirmed TINYINT(1) NOT NULL DEFAULT 0, export_format VARCHAR(8) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_trace (trace_id), KEY idx_advisor (advisor_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS script_template ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, scene VARCHAR(32) NOT NULL, customer_type VARCHAR(32) NULL, title VARCHAR(256) NOT NULL, content TEXT NOT NULL, tags JSON NULL, embedding_id VARCHAR(64) NULL, is_approved TINYINT(1) NOT NULL DEFAULT 0, approved_by VARCHAR(64) NULL, approved_at DATETIME NULL, version INT NOT NULL DEFAULT 1, usage_count INT NOT NULL DEFAULT 0, is_active TINYINT(1) NOT NULL DEFAULT 1, created_by VARCHAR(64) NOT NULL, updated_by VARCHAR(64) NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_scene (scene), KEY idx_approved (is_approved) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS template_use_log ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, use_id VARCHAR(64) NOT NULL UNIQUE, trace_id VARCHAR(64) NOT NULL, template_id BIGINT UNSIGNED NOT NULL, advisor_id VARCHAR(64) NOT NULL, is_modified TINYINT(1) NOT NULL DEFAULT 0, original_content TEXT NULL, modified_content TEXT NULL, content_diff TEXT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_template (template_id), KEY idx_trace (trace_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS market_alert ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, alert_id VARCHAR(64) NOT NULL UNIQUE, trace_id VARCHAR(64) NULL, fund_code VARCHAR(16) NOT NULL, fund_name VARCHAR(128) NULL, alert_type VARCHAR(16) NOT NULL, threshold_hit DECIMAL(8,4) NOT NULL, nav DECIMAL(10,4) NULL, nav_date DATE NOT NULL, category VARCHAR(32) NULL, generated_text TEXT NULL, compliance_result JSON NULL, generation_latency_ms INT NULL, status VARCHAR(16) NOT NULL DEFAULT 'pending', advisor_id VARCHAR(64) NULL, advisor_feedback VARCHAR(16) NULL, edited_text TEXT NULL, feedback_at DATETIME NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_fund (fund_code), KEY idx_status (status), KEY idx_nav_date (nav_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS kyc_session ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, session_id VARCHAR(64) NOT NULL UNIQUE, trace_id VARCHAR(64) NOT NULL, advisor_id VARCHAR(64) NOT NULL, customer_id VARCHAR(64) NOT NULL, session_type VARCHAR(16) NOT NULL, status VARCHAR(16) NOT NULL DEFAULT 'in_progress', current_node VARCHAR(32) NOT NULL DEFAULT 'basic_info', collected_fields JSON NULL, missing_fields JSON NULL, progress_pct INT NOT NULL DEFAULT 0, dialog_turns INT NOT NULL DEFAULT 0, started_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, completed_at DATETIME NULL, duration_seconds INT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_advisor (advisor_id), KEY idx_customer (customer_id), KEY idx_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- agent_message 序号唯一(共用底座已建表时执行) -- ALTER TABLE agent_message ADD UNIQUE KEY uk_agent_message_session_seq (session_id, seq_no);