Files
Mutual_Fund/sql/schema.sql
T
2026-09-11 11:24:32 +08:00

445 lines
28 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================
-- 智能公募基金系统 · MySQL 建表脚本(24 张,见开发计划 §3.1)
-- 执行:mysql -u<user> -p <database> < 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=员工',
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 再平衡参照,运营可调整)';