feat(storage): 数据保留补齐引擎运行与流水表,新增每天低峰的流水数据清理和 db-retention 脚本
- 保留规则改为声明式(retention.ts 每个任务的 rules),定时任务、立即清理、脚本 dry-run 共用一份条件; 删得多(≥ 1000 行)的表删完 ANALYZE - 引擎 run 单独保留期 engineRun(缺省 14 天):只删终态、过期、没被保留中业务任务引用、父 run 已结束的; step_attempts 级联,运行元数据 / 事实 / 信号跟随 run(原来按时间直接删,长时间运行的 run 会丢元数据) - 业务任务被 agent_run / decision 等引用时不删(外键 set null,删了会断开引用) - 新任务 storage.retention.pipeline(每天 04:40):已投递 outbox 事件(只删无幂等键或一次性幂等键)、 识别尝试(每条资源留最近 3 次)、已识别且资源仍绑定作品的待识别条目(忽略 / 归档不删)、 站点快照(每站最近一次成功的列表快照保留) - settings.storage.retentionDays 追加 engineRun / outboxEvent / resolutionAttempt / identityResolved / siteSnapshot(旧库按缺省补),设置页「系统 → 数据保留」显示 - scripts/db-retention.ts:缺省 dry-run 输出每张表将删行数,--apply 执行,--only 选目标 - 测试:各表按规则删、被引用 / 未结束的不删、dry-run 与删除一致、分批;EXPLAIN 确认改写后的查询走索引 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
1 parent
9fffee16c8
commit
8c8b252667
9 files changed
+664
-73
No files matched your search
@@ -527,6 +527,7 @@ export const StorageCleanupTarget = z.enum([
|
||||
"agent_event",
|
||||
"audit",
|
||||
"capability_stats",
|
||||
"pipeline",
|
||||
"identity_pool",
|
||||
"analyze",
|
||||
"images",
|
||||
|
||||
@@ -559,6 +559,17 @@ export const StorageRetentionDays = z.object({
|
||||
capabilityStats: Days,
|
||||
/** 待识别池 unmatched 条目无新证据多少天后归档 */
|
||||
identityPoolArchive: Days,
|
||||
// ── 2026-10-06 数据库清理(docs/runbook/storage.md「保留规则」);旧库缺这些字段时按缺省补 ──
|
||||
/** 已结束的引擎 run(步骤级联)、运行元数据 / 事实 / 信号;仍被保留中的业务任务引用的跟随任务 */
|
||||
engineRun: Days,
|
||||
/** 已投递的 outbox 事件(只删无幂等键或一次性 / 带时间槽的幂等键) */
|
||||
outboxEvent: Days,
|
||||
/** 识别尝试记录;每条资源至少保留最近 3 次 */
|
||||
resolutionAttempt: Days,
|
||||
/** 已识别(资源已绑定作品)的待识别池条目;忽略、归档的不删 */
|
||||
identityResolved: Days,
|
||||
/** 站点列表快照;每个站点最近一次成功的保留 */
|
||||
siteSnapshot: Days,
|
||||
});
|
||||
export type StorageRetentionDays = z.infer<typeof StorageRetentionDays>;
|
||||
|
||||
@@ -612,6 +623,11 @@ export const DEFAULT_STORAGE_SETTINGS: StorageSettings = {
|
||||
audit: 180,
|
||||
capabilityStats: 90,
|
||||
identityPoolArchive: 30,
|
||||
engineRun: 14,
|
||||
outboxEvent: 30,
|
||||
resolutionAttempt: 30,
|
||||
identityResolved: 60,
|
||||
siteSnapshot: 30,
|
||||
},
|
||||
cacheTtl: {
|
||||
tmdbSearchDays: 7,
|
||||
|
||||
Reference in new issue
Block a user