-- ===================================================================== -- 智能公募基金系统 · MySQL 建表脚本(24 张,见开发计划 §3.1) -- 执行:mysql -u -p < sql/schema.sql -- 约定:InnoDB / utf8mb4;采用"逻辑外键"(不建物理 FK,便于 Mock 数据灌入), -- 注释即文档,NL2SQL 以 COMMENT 注入 Schema。 -- ===================================================================== -- --------------------------------------------------------------------- -- 01 统一用户表(客户 + 员工共用) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS sys_user ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(64) NOT NULL COMMENT '登录账号,唯一', password_hash VARCHAR(255) NOT NULL COMMENT 'bcrypt 哈希,不存明文', salt VARCHAR(32) NULL COMMENT '口令盐', real_name VARCHAR(32) NULL COMMENT '真实姓名', phone VARCHAR(20) NOT NULL COMMENT '手机号(脱敏展示用)', user_type VARCHAR(16) NOT NULL DEFAULT 'CUSTOMER' COMMENT 'CUSTOMER=客户 / EMPLOYEE=员工 / ADMIN=管理员', employee_role VARCHAR(32) NULL COMMENT '员工角色:理财顾问/风控专员/客户经理/管理员', customer_level VARCHAR(16) NULL COMMENT '客户等级:普通/金卡/白金/钻石/私行', status VARCHAR(16) NOT NULL DEFAULT '正常' COMMENT '账号状态:正常/禁用/冻结', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_username (username), KEY idx_phone (phone), KEY idx_user_type (user_type) ) COMMENT='统一用户表(客户与员工共用账号体系)'; -- --------------------------------------------------------------------- -- 02 客户画像主表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_customer_profile ( customer_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID,一对一关联 sys_user.id', risk_level VARCHAR(16) NULL COMMENT '风险等级:保守/稳健/平衡/进取/激进', risk_score INT NULL COMMENT '风险评分 0-100,越高越激进', investment_experience VARCHAR(16) NULL COMMENT '投资经验:0-1/1-3/3-5/5-10/10年以上', annual_income_range VARCHAR(32) NULL COMMENT '年收入区间', total_assets DECIMAL(18,2) NULL COMMENT '总资产(元)', asset_allocation JSON NULL COMMENT '资产配置偏好 {股票:30,债券:40,...}', product_preference JSON NULL COMMENT '产品偏好 {基金:[混合型,债券型]}', customer_level VARCHAR(16) NULL COMMENT '客户等级(运营可调整)', confidence_score DECIMAL(5,2) NOT NULL DEFAULT 0.50 COMMENT '画像置信度 0-1,用于推荐权重', profile_version INT NOT NULL DEFAULT 1 COMMENT '画像版本号(重建时递增)', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (customer_id), KEY idx_risk_level (risk_level), KEY idx_total_assets (total_assets) ) COMMENT='客户画像主表(RAG/GraphRAG 个性化推荐核心上下文)'; -- --------------------------------------------------------------------- -- 03 公募基金产品表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_product ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, product_code VARCHAR(32) NOT NULL COMMENT '基金代码,唯一,如 F000001', product_name VARCHAR(128) NOT NULL COMMENT '基金名称', product_type VARCHAR(32) NOT NULL COMMENT '类型:货币/债券/混合/股票基金', risk_level VARCHAR(8) NOT NULL COMMENT '风险等级 R1-R5', expected_return DECIMAL(7,4) NULL COMMENT '预期年化收益率(%)', nav DECIMAL(12,6) NULL COMMENT '最新单位净值', nav_date DATE NULL COMMENT '净值日期', fee_rate DECIMAL(6,4) NOT NULL DEFAULT 0.0000 COMMENT '申购费率(%)', term_days INT NOT NULL DEFAULT 0 COMMENT '产品期限天数,0=活期(开放申赎)', fund_manager VARCHAR(64) NULL COMMENT '基金经理', status VARCHAR(16) NOT NULL DEFAULT '在售' COMMENT '在售/暂停/到期/清盘', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_product_code (product_code), KEY idx_type_status (product_type, status), KEY idx_risk (risk_level) ) COMMENT='公募基金产品表'; -- --------------------------------------------------------------------- -- 04 基金净值历史 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fund_nav_history ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, product_id BIGINT UNSIGNED NOT NULL COMMENT '产品ID', nav_date DATE NOT NULL COMMENT '净值日期', unit_nav DECIMAL(12,6) NOT NULL COMMENT '单位净值', accumulated_nav DECIMAL(12,6) NULL COMMENT '累计净值', daily_growth DECIMAL(8,4) NULL COMMENT '日增长率(%)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_product_date (product_id, nav_date) ) COMMENT='基金净值历史(业绩指标/走势图数据源)'; -- --------------------------------------------------------------------- -- 05 交易申请单(申购/赎回主表:风控挂起→处置→回写的状态机载体) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS trade_order ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, order_no VARCHAR(32) NOT NULL COMMENT '申请单号,全局唯一', customer_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID', product_id BIGINT UNSIGNED NOT NULL COMMENT '产品ID', advisor_id BIGINT UNSIGNED NULL COMMENT '经办投顾(代下/调仓)', order_type VARCHAR(16) NOT NULL COMMENT '申购/赎回', amount DECIMAL(18,2) NULL COMMENT '申请金额(元)', shares DECIMAL(18,4) NULL COMMENT '申请/成交份额', nav DECIMAL(12,6) NULL COMMENT '确认净值(确认时回填)', fee DECIMAL(12,2) NULL COMMENT '手续费(确认时回填)', status VARCHAR(16) NOT NULL DEFAULT '待确认' COMMENT '待确认/风控挂起/已确认/已撤单/失败', risk_alert_id BIGINT UNSIGNED NULL COMMENT '命中风控预警ID(挂起时关联)', cancel_reason VARCHAR(255) NULL COMMENT '撤单/失败原因', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, confirm_time DATETIME NULL COMMENT '确认时间', KEY idx_customer (customer_id, status), KEY idx_status (status), UNIQUE KEY uk_order_no (order_no) ) COMMENT='交易申请单(风控阻断闭环主表,状态机单一来源)'; -- --------------------------------------------------------------------- -- 06 成交流水 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_transaction ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, transaction_no VARCHAR(32) NOT NULL COMMENT '流水号,全局唯一', order_id BIGINT UNSIGNED NULL COMMENT '关联申请单 ID', customer_id BIGINT UNSIGNED NOT NULL, product_id BIGINT UNSIGNED NOT NULL, operator_id BIGINT UNSIGNED NULL COMMENT '经办理财顾问', transaction_type VARCHAR(16) NOT NULL COMMENT '申购/赎回/分红/定投', amount DECIMAL(18,2) NOT NULL COMMENT '交易金额(元)', shares DECIMAL(18,4) NULL COMMENT '成交份额', nav DECIMAL(12,6) NULL COMMENT '成交净值', fee DECIMAL(12,2) NOT NULL DEFAULT 0 COMMENT '手续费(元)', status VARCHAR(16) NOT NULL DEFAULT '已确认' COMMENT '待确认/已确认/已撤单/失败', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_transaction_no (transaction_no), KEY idx_customer_time (customer_id, create_time), KEY idx_product (product_id) ) COMMENT='成交流水表(成交后落库)'; -- --------------------------------------------------------------------- -- 07 持仓表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_holdings ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL COMMENT '持仓客户', product_id BIGINT UNSIGNED NOT NULL COMMENT '持有产品', shares DECIMAL(18,4) NOT NULL DEFAULT 0 COMMENT '持有份额', cost_amount DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '成本金额(元)', current_value DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '当前市值(元,持仓重估任务更新)', profit_loss DECIMAL(18,2) NOT NULL DEFAULT 0 COMMENT '盈亏金额(元)', profit_ratio DECIMAL(8,4) NOT NULL DEFAULT 0 COMMENT '盈亏比例(%)', status VARCHAR(16) NOT NULL DEFAULT '持有中' COMMENT '持有中/已清仓', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_customer_product (customer_id, product_id), KEY idx_status (status) ) COMMENT='持仓表(当前/历史持仓快照)'; -- --------------------------------------------------------------------- -- 08 风险评估记录 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_risk_assessment ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL COMMENT '被评估客户', assessment_date DATE NOT NULL COMMENT '评估日期', question_version VARCHAR(16) NULL COMMENT '问卷版本(题目变更后按版本追溯)', total_score INT NOT NULL COMMENT '总分 0-100', risk_level VARCHAR(16) NOT NULL COMMENT '评定:保守/稳健/平衡/进取/激进', answers JSON NULL COMMENT '答题详情 [{q:1,a:B,score:10}]', assessor_type VARCHAR(16) NOT NULL DEFAULT 'AI评估' COMMENT 'AI评估/人工评估', valid_until DATE NOT NULL COMMENT '有效期至(默认 +1年,监管一年一评)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_customer_date (customer_id, assessment_date) ) COMMENT='风险评估记录表(购买前问卷确认客户等级)'; -- --------------------------------------------------------------------- -- 09 问卷模板 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS ops_questionnaire ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(64) NOT NULL COMMENT '问卷名称,如 风险测评问卷', q_type VARCHAR(16) NOT NULL COMMENT '风险测评/投资者分类', version VARCHAR(16) NOT NULL DEFAULT 'v1' COMMENT '版本号', status VARCHAR(16) NOT NULL DEFAULT '启用' COMMENT '启用/停用', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) COMMENT='问卷模板表'; -- --------------------------------------------------------------------- -- 10 题目表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS ops_question ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, questionnaire_id BIGINT UNSIGNED NOT NULL COMMENT '所属问卷', question_no INT NOT NULL COMMENT '题号', content VARCHAR(512) NOT NULL COMMENT '题干', option_json JSON NULL COMMENT '选项配置 [{label:A,text:...}]', score_json JSON NULL COMMENT '选项分值 {A:10,B:8,...}', sort INT NOT NULL DEFAULT 0, UNIQUE KEY uk_q_no (questionnaire_id, question_no) ) COMMENT='问卷题目表(题目/选项/分值可运营配置)'; -- --------------------------------------------------------------------- -- 11 风控预警表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_risk_alert ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL COMMENT '被预警客户', order_id BIGINT UNSIGNED NULL COMMENT '关联交易申请单(挂起时必填)', alert_type VARCHAR(32) NOT NULL COMMENT '大额交易/频繁交易/快进快出/疑洗钱/适当性异常等', alert_level VARCHAR(8) NOT NULL COMMENT '低(蓝)/中(黄)/高(红)', trigger_detail TEXT NULL COMMENT '触发详情(命中规则、AI 推理过程)', transaction_ids JSON NULL COMMENT '关联交易 ID 列表', confidence DECIMAL(5,2) NOT NULL DEFAULT 0.50 COMMENT '预警置信度', status VARCHAR(16) NOT NULL DEFAULT '未处理' COMMENT '未处理/处理中/已确认/已排除', handler_id BIGINT UNSIGNED NULL COMMENT '处理人(风控专员)', handle_result TEXT NULL COMMENT '处置结论留痕', handle_time DATETIME NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_status_level (status, alert_level), KEY idx_customer (customer_id), KEY idx_order (order_id) ) COMMENT='风控预警表(阻断后由风控专员在控制台处置)'; -- --------------------------------------------------------------------- -- 12 风控规则表(规则引擎表驱动) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS risk_rule ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, rule_id VARCHAR(16) NOT NULL COMMENT '规则编号,如 R001', rule_name VARCHAR(64) NOT NULL COMMENT '规则名称', trigger_condition VARCHAR(512) NULL COMMENT '触发条件描述', threshold JSON NULL COMMENT '阈值配置 {amount:50000,...}', risk_level VARCHAR(8) NOT NULL DEFAULT '低' COMMENT '低/中/高', weight DECIMAL(4,2) NOT NULL DEFAULT 1.00 COMMENT '规则权重(预警分级用)', status VARCHAR(8) NOT NULL DEFAULT '启用' COMMENT '启用/停用(运营可调)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_rule_id (rule_id) ) COMMENT='风控规则表(20 条反洗钱/异常交易规则,驱动风控Agent)'; -- --------------------------------------------------------------------- -- 13 通用业务工单表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS biz_work_order ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, work_order_no VARCHAR(32) NOT NULL COMMENT '工单编号,如 WO20260908xxxx', order_type VARCHAR(32) NOT NULL COMMENT '产品申购/产品赎回/投顾签约/信息变更/投诉建议/风评重做/可疑交易上报', sub_type VARCHAR(32) NULL COMMENT '子类型', customer_id BIGINT UNSIGNED NULL COMMENT '关联客户', submitter_id BIGINT UNSIGNED NULL COMMENT '提交人(客户或员工代办)', handler_id BIGINT UNSIGNED NULL COMMENT '当前处理人(投顾/风控专员)', current_node VARCHAR(32) NOT NULL DEFAULT '初审' COMMENT '初审/复核/完成', priority VARCHAR(8) NOT NULL DEFAULT '普通' COMMENT '普通/紧急/特急', status VARCHAR(16) NOT NULL DEFAULT '待处理' COMMENT '待处理/处理中/待审核/已完成/已驳回', biz_content JSON NULL COMMENT '业务内容(按 order_type 结构各异)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_work_order_no (work_order_no), KEY idx_handler_status (handler_id, status), KEY idx_customer (customer_id) ) COMMENT='通用业务工单表(投标顾签约、可疑交易上报等流程载体)'; -- --------------------------------------------------------------------- -- 14 会话归档表 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS conversation_archive ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, session_id VARCHAR(64) NOT NULL COMMENT '会话ID,同轮共用', user_id BIGINT UNSIGNED NOT NULL COMMENT '对话用户', agent_type VARCHAR(32) NOT NULL COMMENT 'customer/advisor/risk/analyst', role VARCHAR(16) NOT NULL COMMENT 'user/assistant/system', content MEDIUMTEXT NULL COMMENT '对话内容', tool_calls JSON NULL COMMENT '工具调用记录 [{"tool":"nl2sql",...}]', trace_id VARCHAR(64) NULL COMMENT '请求链路追踪ID', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, trace_id VARCHAR(64) NULL COMMENT '请求链路追踪ID', KEY idx_session (session_id), KEY idx_user_time (user_id, create_time), KEY idx_agent (agent_type), message_id VARCHAR(64) NULL COMMENT '消息唯一ID,用于归档幂等', agent_run_id VARCHAR(64) NULL COMMENT 'Agent运行ID,用于调用链路追踪', UNIQUE KEY uk_session_message (session_id, message_id), KEY idx_agent_run (agent_run_id) ) COMMENT='会话归档表(审计回溯 + Agent 持续学习素材,归档前脱敏)'; -- --------------------------------------------------------------------- -- 15 知识元数据表(原文存 MySQL,替代 MinIO) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fin_knowledge_meta ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, knowledge_type VARCHAR(32) NOT NULL COMMENT '产品说明/政策法规/FAQ/操作指南/市场研报', title VARCHAR(255) NOT NULL COMMENT '知识条目标题', source_file VARCHAR(255) NULL COMMENT '来源文件名', raw_content LONGTEXT NULL COMMENT '文档原文/切片(MinIO 替代方案)', file_path VARCHAR(512) NULL COMMENT '本地上传原文件路径(若保留)', milvus_collection VARCHAR(128) NULL COMMENT 'Milvus 向量集合名', version VARCHAR(32) NOT NULL DEFAULT 'v1', status VARCHAR(16) NOT NULL DEFAULT '有效' COMMENT '有效/过期/草稿', expire_at DATETIME NULL COMMENT '过期时间(政策 1 年/产品说明半年)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_type (knowledge_type), KEY idx_status (status) ) COMMENT='金融知识元数据表(RAG 知识库目录 + 正文载体,Milvus source_id 关联本表)'; -- --------------------------------------------------------------------- -- 16 客户-投顾关系表(签约状态驱动客服引导与投顾服务范围) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS customer_relation ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL COMMENT '客户ID', advisor_id BIGINT UNSIGNED NOT NULL COMMENT '投顾ID', assign_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间(注册自动分配)', signed_time DATETIME NULL COMMENT '签约时间', end_time DATETIME NULL COMMENT '关系结束时间', status VARCHAR(16) NOT NULL DEFAULT '已分配' COMMENT '已分配/已签约/已结束', reason VARCHAR(128) NULL COMMENT '结束/变更原因', KEY idx_advisor (advisor_id, status), KEY idx_customer (customer_id) ) COMMENT='客户-投顾关系表(状态驱动:签约后投顾Agent方案正式触达客户)'; -- --------------------------------------------------------------------- -- 17 画像变更日志(冲突策略审计) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS customer_profile_change_log ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL, tag VARCHAR(64) NULL COMMENT '标签名', old_value VARCHAR(255) NULL COMMENT '旧值', new_value VARCHAR(255) NULL COMMENT '新值', source VARCHAR(32) NULL COMMENT '来源:风评问卷/行为推断/AI对话提取/用户自述/人工', confidence DECIMAL(5,2) NULL COMMENT '新值置信度', reason VARCHAR(255) NULL COMMENT '变更原因(冲突策略/人工修正)', operator_id BIGINT UNSIGNED NULL COMMENT '操作人(人工修正时)', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_customer (customer_id) ) COMMENT='画像变更审计(保留冲突记录与人工修正痕迹)'; -- --------------------------------------------------------------------- -- 18 操作审计日志(企业级:谁在何时做了什么) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS audit_log ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id BIGINT UNSIGNED NULL COMMENT '操作人', username VARCHAR(64) NULL, module VARCHAR(32) NOT NULL COMMENT 'auth/product/trade/risk/...', action VARCHAR(64) NOT NULL COMMENT '操作动作', target VARCHAR(128) NULL COMMENT '操作对象(单号/ID)', detail TEXT NULL COMMENT '详情(JSON 字符串)', ip VARCHAR(64) NULL, trace_id VARCHAR(32) NULL COMMENT '链路号', status VARCHAR(8) NOT NULL DEFAULT '成功' COMMENT '成功/失败', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_user (user_id), KEY idx_module_time (module, create_time) ) COMMENT='操作审计日志表(企业级合规留痕)'; -- --------------------------------------------------------------------- -- 19 官网公告 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS sys_announcement ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(128) NOT NULL, content TEXT NULL, status VARCHAR(16) NOT NULL DEFAULT '草稿' COMMENT '草稿/已发布', publish_time DATETIME NULL, expire_at DATETIME NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_status (status, publish_time) ) COMMENT='官网公告表'; -- --------------------------------------------------------------------- -- 20 站内信/消息中心 -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS sys_message ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id BIGINT UNSIGNED NOT NULL COMMENT '收件人', msg_type VARCHAR(32) NOT NULL COMMENT '推荐/调仓/风控/签约/系统', title VARCHAR(128) NOT NULL, content VARCHAR(512) NULL, biz_id VARCHAR(64) NULL COMMENT '关联业务单号(订单/工单/预警)', is_read TINYINT NOT NULL DEFAULT 0, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, KEY idx_user_read (user_id, is_read) ) COMMENT='站内信/消息中心表(投顾触达客户通道)'; -- --------------------------------------------------------------------- -- 21 运营参数表(免发版调整) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS sys_config ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, config_key VARCHAR(64) NOT NULL COMMENT '键,如 high_net_worth_threshold', config_value VARCHAR(255) NOT NULL COMMENT '值', description VARCHAR(255) NULL COMMENT '说明', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_config_key (config_key) ) COMMENT='运营参数 KV 表(高净值门槛/偏离度阈值/风控开关等)'; -- --------------------------------------------------------------------- -- 22 记忆单元表(记忆架构主体,见开发计划 §4.2) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS memory_unit ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, customer_id BIGINT UNSIGNED NOT NULL COMMENT '归属客户', tag VARCHAR(64) NOT NULL COMMENT '标签名,如 risk_preference', content VARCHAR(512) NOT NULL COMMENT '内容,如 偏好稳健型理财', info_type VARCHAR(8) NOT NULL COMMENT 'FACT 客观事实 / OPINION 主观观点', source VARCHAR(32) NOT NULL COMMENT '风评问卷/行为推断/AI对话提取/用户自述/系统默认', source_confidence DECIMAL(5,2) NOT NULL DEFAULT 0.20 COMMENT '来源初始置信度', confidence DECIMAL(5,2) NOT NULL DEFAULT 0.20 COMMENT '当前置信度(动态)', evidence_count INT NOT NULL DEFAULT 0 COMMENT '证据数', conflict_count INT NOT NULL DEFAULT 0 COMMENT '冲突数', recall_count INT NOT NULL DEFAULT 0 COMMENT '召回数', update_time DATETIME NULL, last_recall_time DATETIME NULL, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT 'active/demoted/archived/deleted', valid_until DATE NULL COMMENT '有效期', KEY idx_customer_status (customer_id, status), KEY idx_tag (tag) ) COMMENT='记忆单元表(三层记忆中期主体,向量镜像在 Milvus customer_memory)'; -- --------------------------------------------------------------------- -- 23 基金业绩指标缓存(定时任务从净值计算) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS fund_performance ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, product_id BIGINT UNSIGNED NOT NULL, period VARCHAR(16) NOT NULL COMMENT '近1月/近3月/近6月/近1年/成立以来', return_rate DECIMAL(10,4) NULL COMMENT '区间收益率(%)', annual_volatility DECIMAL(10,4) NULL COMMENT '年化波动率(%)', max_drawdown DECIMAL(10,4) NULL COMMENT '最大回撤(%)', sharpe DECIMAL(10,4) NULL COMMENT '夏普比率', calc_date DATE NOT NULL COMMENT '计算日期', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uk_product_period (product_id, period) ) COMMENT='基金业绩指标缓存(深度分析/多维对比数据源)'; -- --------------------------------------------------------------------- -- 24 组合基准配置(再平衡参照系) -- --------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS portfolio_benchmark ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, risk_level VARCHAR(16) NOT NULL COMMENT '客户风险等级:保守/稳健/平衡/进取/激进', target_allocation JSON NOT NULL COMMENT '目标配置 {货币:50,债券:40,股票:10}', drift_threshold DECIMAL(5,2) NOT NULL DEFAULT 5.00 COMMENT '偏离阈值(%),超阈值触发调仓建议', status VARCHAR(8) NOT NULL DEFAULT '启用' COMMENT '启用/停用', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_risk_level (risk_level) ) COMMENT='组合基准配置表(投顾Agent 再平衡参照,运营可调整)';