feat:客户agent以及记忆模块功能开发

This commit is contained in:
2026-09-11 22:38:15 +08:00
parent 0197ac2ef2
commit 4da4775e8c
39 changed files with 2508 additions and 14 deletions
+68 -11
View File
@@ -1,10 +1,43 @@
-- =====================================================================
-- 智能公募基金系统 · MySQL 建表脚本(24 张,见开发计划 §3.1)
-- 执行:mysql -u<user> -p <database> < sql/schema.sql
-- 执行:mysql --default-character-set=utf8mb4 -u<user> -p <database> < sql/schema.sql
-- 约定:InnoDB / utf8mb4;采用"逻辑外键"(不建物理 FK,便于 Mock 数据灌入),
-- 注释即文档,NL2SQL 以 COMMENT 注入 Schema。
-- =====================================================================
SET NAMES utf8mb4;
-- =====================================================================
-- 重建模式:执行本脚本前清理已有表
-- 注意:以下语句会删除当前数据库中的业务数据,仅用于本地/测试环境重建。
-- =====================================================================
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS portfolio_benchmark;
DROP TABLE IF EXISTS fund_performance;
DROP TABLE IF EXISTS memory_unit;
DROP TABLE IF EXISTS sys_config;
DROP TABLE IF EXISTS sys_message;
DROP TABLE IF EXISTS sys_announcement;
DROP TABLE IF EXISTS audit_log;
DROP TABLE IF EXISTS customer_profile_change_log;
DROP TABLE IF EXISTS customer_relation;
DROP TABLE IF EXISTS fin_knowledge_meta;
DROP TABLE IF EXISTS conversation_archive;
DROP TABLE IF EXISTS biz_work_order;
DROP TABLE IF EXISTS risk_rule;
DROP TABLE IF EXISTS fin_risk_alert;
DROP TABLE IF EXISTS ops_question;
DROP TABLE IF EXISTS ops_questionnaire;
DROP TABLE IF EXISTS fin_risk_assessment;
DROP TABLE IF EXISTS fin_holdings;
DROP TABLE IF EXISTS fin_transaction;
DROP TABLE IF EXISTS trade_order;
DROP TABLE IF EXISTS fund_nav_history;
DROP TABLE IF EXISTS fin_product;
DROP TABLE IF EXISTS fin_customer_profile;
DROP TABLE IF EXISTS sys_user;
SET FOREIGN_KEY_CHECKS = 1;
-- ---------------------------------------------------------------------
-- 01 统一用户表(客户 + 员工共用)
-- ---------------------------------------------------------------------
@@ -260,20 +293,20 @@ CREATE TABLE IF NOT EXISTS biz_work_order (
CREATE TABLE IF NOT EXISTS conversation_archive (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
session_id VARCHAR(64) NOT NULL COMMENT '会话ID,同轮共用',
customer_id BIGINT UNSIGNED 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",...}]',
message_id VARCHAR(64) NOT NULL COMMENT '消息唯一ID,用于归档幂等',
agent_run_id VARCHAR(64) NULL COMMENT 'Agent运行ID,用于调用链路追踪',
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),
UNIQUE KEY uk_session_message (session_id, message_id),
KEY idx_agent_run (agent_run_id)
) COMMENT='会话归档表(审计回溯 + Agent 持续学习素材,归档前脱敏)';
@@ -396,23 +429,47 @@ CREATE TABLE IF NOT EXISTS sys_config (
CREATE TABLE IF NOT EXISTS memory_unit (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
customer_id BIGINT UNSIGNED NOT NULL COMMENT '归属客户',
session_id VARCHAR(64) NULL COMMENT '产生该记忆的会话ID',
agent_run_id VARCHAR(64) NULL COMMENT '产生该记忆的Agent运行ID',
memory_type VARCHAR(32) NOT NULL COMMENT '记忆类型:PROFILE_FACT/PROFILE_CANDIDATE/CUSTOMER_PREFERENCE/INVESTMENT_GOAL/SERVICE_FACT/CUSTOMER_RELATION',
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 VARCHAR(32) NOT NULL COMMENT 'user_confirmed/user_stated/ai_inferred/behavior_inference',
evidence_ref JSON NULL COMMENT '证据引用列表,如消息ID、交易ID或人工记录ID',
source_confidence DECIMAL(5,2) NOT NULL DEFAULT 0.20 COMMENT '来源初始置信度',
confidence DECIMAL(5,2) NOT NULL DEFAULT 0.20 COMMENT '当前置信度(动态)',
historical_accuracy DECIMAL(5,2) NOT NULL DEFAULT 0.50 COMMENT '历史准确性评分',
confidence_version VARCHAR(32) NULL COMMENT '置信度计算版本',
confidence_reason VARCHAR(255) NULL COMMENT '本次置信度评估原因',
confidence_update_time DATETIME NULL 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 '召回数',
memory_version INT NOT NULL DEFAULT 1 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 '有效期',
status VARCHAR(16) NOT NULL DEFAULT 'candidate' COMMENT 'candidate/confirmed/expired/rejected/archived',
valid_from DATETIME NULL COMMENT '记忆生效时间',
valid_until DATETIME NULL COMMENT '有效期',
last_verified_at DATETIME NULL COMMENT '最近确认或验证时间',
milvus_id VARCHAR(128) NULL COMMENT 'Milvus 向量记录ID',
graph_node_id VARCHAR(128) NULL COMMENT 'Neo4j 节点或关系ID',
milvus_sync_status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT 'Milvus同步状态:pending/success/failed',
neo4j_sync_status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT 'Neo4j同步状态:pending/success/failed',
sync_retry_count INT NOT NULL DEFAULT 0 COMMENT '三库同步重试次数',
last_sync_error VARCHAR(500) NULL COMMENT '最近一次同步错误',
next_retry_at DATETIME NULL COMMENT '下次同步重试时间',
last_synced_at DATETIME NULL COMMENT '最近一次同步成功时间',
KEY idx_customer_status (customer_id, status),
KEY idx_tag (tag)
) COMMENT='记忆单元表(三层记忆中期主体,向量镜像在 Milvus customer_memory)';
KEY idx_customer_type_status (customer_id, memory_type, status),
KEY idx_customer_tag_status (customer_id, tag, status),
KEY idx_session (session_id),
KEY idx_customer_session (customer_id, session_id),
KEY idx_milvus (milvus_id),
KEY idx_graph (graph_node_id)
) COMMENT='客户长期记忆主体表,向量镜像在 Milvus customer_memory,关系镜像在 Neo4j';
-- ---------------------------------------------------------------------
-- 23 基金业绩指标缓存(定时任务从净值计算)
@@ -442,4 +499,4 @@ CREATE TABLE IF NOT EXISTS portfolio_benchmark (
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 再平衡参照,运营可调整)';
) COMMENT='组合基准配置表(投顾Agent 再平衡参照,运营可调整)';