Files
Cyrene_v2/internal/db/migrations/0025_memory_ingest_reviews.down.sql
T
AskaEth ffe2518bf4
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled
feat(memory): 留痕表正式迁移 0025 + 保留期清扫(W5)
- 迁移 0025_memory_ingest_reviews(幂等,既有部署重跑不炸/不丢行)
- GC:保留期 720h + 条数上限 10 万行,挂进审查服务生命周期(Start 起 / Stop 停 / 启动先扫)
- 过期即硬删(RevertMerged 只读 memory_items,删留痕不损失回滚能力)
- 偏离一处并给理由:表只留 created_at(先例 0017;append-only;加 updated_at 需三份 DDL 真源)
- 3 个变异自检(边界 <=/元组比较方向/Retention=0)
2026-10-06 15:59:16 +08:00

15 lines
1.0 KiB
SQL

-- 0025 的回滚:先删索引、再删表(与 0019 / 0021 的回滚同一顺序口径)。
--
-- 删留痕**不影响任何一条记忆的可逆性**:留痕描述的那次软合并早已落在
-- `memory_items` 上(`status` / `merged_into` / `merged_from` / `merge_count`),
-- 回滚一次合并(`Store.RevertMerged`)只读 `memory_items`(见
-- internal/runtime/memory/preinsert_store.go 的 selectMergedIntoSQL),
-- 从不读本表。代价只是「这次决定当初为什么这么判」的依据丢失,属降级可接受。
--
-- 且本表由记忆存储自举(`NewStore` → `ensureIngestReviewSchema`):回滚删表之后,
-- 下次启动会按同一 DDL 重建一张空表,不需要人工干预(这也是本表与
-- memory_items 这类「用户数据表」的关键区别 —— 它是派生的观测留痕,不是正文)。
DROP INDEX IF EXISTS idx_memory_ingest_reviews_created_at;
DROP INDEX IF EXISTS idx_memory_ingest_reviews_item_id;
DROP TABLE IF EXISTS memory_ingest_reviews;