Files
Mutual_Fund/sql/memory_unit_upgrade_20260913.sql
T

46 lines
2.9 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.
-- memory_unit 表结构升级:对齐 model/memory_unit.py(34 列)
-- 日期:2026-09-13 执行方式:scripts/apply_memory_unit_upgrade.py(幂等)或本文件手工执行
-- 背景:DB 为旧版 20 列结构,缺 session_id/evidence_ref/置信度/同步状态等 17 列,
-- 导致客服 Agent 长期记忆保存与召回抛 OperationalError(memory_warnings 来源)。
-- 1) 新增 17 列
ALTER TABLE memory_unit
ADD COLUMN session_id VARCHAR(64) NULL COMMENT '产生记忆的会话ID',
ADD COLUMN agent_run_id VARCHAR(64) NULL COMMENT '产生记忆的Agent运行ID',
ADD COLUMN evidence_ref JSON NULL COMMENT '证据引用列表(会话/消息溯源)',
ADD COLUMN historical_accuracy DECIMAL(5,2) NOT NULL DEFAULT 0.50 COMMENT '历史准确率',
ADD COLUMN confidence_version VARCHAR(32) NULL COMMENT '置信度算法版本',
ADD COLUMN confidence_reason VARCHAR(255) NULL COMMENT '置信度评分原因',
ADD COLUMN confidence_update_time DATETIME NULL COMMENT '置信度更新时间',
ADD COLUMN memory_version INT NOT NULL DEFAULT 1 COMMENT '记忆版本号',
ADD COLUMN last_verified_at DATETIME NULL COMMENT '最近验证时间',
ADD COLUMN milvus_id VARCHAR(128) NULL COMMENT 'Milvus向量主键',
ADD COLUMN graph_node_id VARCHAR(128) NULL COMMENT 'Neo4j图谱节点ID',
ADD COLUMN milvus_sync_status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT '向量同步状态',
ADD COLUMN neo4j_sync_status VARCHAR(16) NOT NULL DEFAULT 'pending' COMMENT '图谱同步状态',
ADD COLUMN sync_retry_count INT NOT NULL DEFAULT 0 COMMENT '同步重试次数',
ADD COLUMN last_sync_error VARCHAR(500) NULL COMMENT '最近同步错误',
ADD COLUMN next_retry_at DATETIME NULL COMMENT '下次重试时间',
ADD COLUMN last_synced_at DATETIME NULL COMMENT '最近成功同步时间';
-- 2) 类型对齐:DATE 无法承载时间语义,扩为 DATETIME
ALTER TABLE memory_unit
MODIFY COLUMN valid_from DATETIME NULL COMMENT '生效起始时间',
MODIFY COLUMN valid_until DATETIME NULL COMMENT '失效时间';
-- 3) 状态语义迁移:旧默认 active → 新枚举 candidate,并更新表默认值
UPDATE memory_unit SET status = 'candidate' WHERE status = 'active';
ALTER TABLE memory_unit
MODIFY COLUMN status VARCHAR(16) NOT NULL DEFAULT 'candidate' COMMENT '记忆状态(candidate/confirmed/expired/rejected/archived)';
-- 4) memory_type 旧枚举归并:NULL 与 'FACT' → 'SERVICE_FACT',再收紧 NOT NULL
UPDATE memory_unit SET memory_type = 'SERVICE_FACT'
WHERE memory_type IS NULL OR memory_type = 'FACT';
ALTER TABLE memory_unit
MODIFY COLUMN memory_type VARCHAR(32) NOT NULL COMMENT '记忆业务类型';
-- 说明:
-- - id/customer_id 为 BIGINT UNSIGNED,与 ORM BigInteger 兼容,不做变更;
-- - 遗留列 conflict_count/dimension/polarity 无 ORM 映射,保留不动;
-- - NUMERIC(5,2) 在 MySQL 中即 DECIMAL(5,2),探针报告的差异为别名,非真实差异。