59 lines
2.7 KiB
SQL
59 lines
2.7 KiB
SQL
-- 记忆整理与去重(design/23)。本迁移只落「建议侧」的结构:
|
|
-- ① memory_items 的整理列(全部带默认值 ⇒ 既有行行为逐字不变);
|
|
-- ② 整理候选表 memory_tidy_candidates(人工确认队列);
|
|
-- ③ 整理运行表 memory_tidy_runs(留痕,不靠会话)。
|
|
-- 第一版**不自动应用任何动作**(design/23 §7),因此 ① 的新列在此版本里
|
|
-- 只被读取(扫描过滤 status='active'),不被本迁移之后的代码改写。
|
|
ALTER TABLE memory_items ADD COLUMN status TEXT NOT NULL DEFAULT 'active';
|
|
ALTER TABLE memory_items ADD COLUMN merged_into TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE memory_items ADD COLUMN merged_from TEXT NOT NULL DEFAULT '[]';
|
|
ALTER TABLE memory_items ADD COLUMN merge_count INTEGER NOT NULL DEFAULT 1;
|
|
ALTER TABLE memory_items ADD COLUMN occurred_at TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE memory_items ADD COLUMN valid_to TEXT NOT NULL DEFAULT '';
|
|
ALTER TABLE memory_items ADD COLUMN expires_at TEXT NOT NULL DEFAULT '';
|
|
CREATE INDEX IF NOT EXISTS idx_memory_items_status
|
|
ON memory_items (persona_id, status);
|
|
|
|
CREATE TABLE IF NOT EXISTS memory_tidy_candidates (
|
|
id TEXT PRIMARY KEY,
|
|
persona_id TEXT NOT NULL,
|
|
scope TEXT NOT NULL,
|
|
project_id TEXT NOT NULL DEFAULT '',
|
|
kind TEXT NOT NULL DEFAULT '',
|
|
action TEXT NOT NULL,
|
|
source_ids TEXT NOT NULL DEFAULT '[]',
|
|
target_id TEXT NOT NULL DEFAULT '',
|
|
proposed_content TEXT NOT NULL DEFAULT '',
|
|
merged_content TEXT NOT NULL DEFAULT '',
|
|
reason TEXT NOT NULL DEFAULT '',
|
|
evidence TEXT NOT NULL DEFAULT '{}',
|
|
rule_version TEXT NOT NULL DEFAULT '',
|
|
score_min REAL NOT NULL DEFAULT 0,
|
|
score_max REAL NOT NULL DEFAULT 0,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
idempotency_key TEXT NOT NULL UNIQUE,
|
|
created_at TEXT NOT NULL,
|
|
decided_at TEXT NOT NULL DEFAULT '',
|
|
decided_by TEXT NOT NULL DEFAULT ''
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_memory_tidy_candidates_status
|
|
ON memory_tidy_candidates (status, scope);
|
|
|
|
CREATE TABLE IF NOT EXISTS memory_tidy_runs (
|
|
id TEXT PRIMARY KEY,
|
|
started_at TEXT NOT NULL,
|
|
finished_at TEXT NOT NULL DEFAULT '',
|
|
scanned INTEGER NOT NULL DEFAULT 0,
|
|
candidates INTEGER NOT NULL DEFAULT 0,
|
|
applied INTEGER NOT NULL DEFAULT 0,
|
|
skipped INTEGER NOT NULL DEFAULT 0,
|
|
errors INTEGER NOT NULL DEFAULT 0,
|
|
vetoed INTEGER NOT NULL DEFAULT 0,
|
|
veto_reasons TEXT NOT NULL DEFAULT '{}',
|
|
rule_version TEXT NOT NULL DEFAULT ''
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_memory_tidy_runs_started_at
|
|
ON memory_tidy_runs (started_at);
|