Phase 1.3: Log Store 归档 — Meta 表 + 冷归档到 JSONL #38

Closed
opened 2026-04-22 15:16:44 +00:00 by xiaoju · 0 comments
Owner

背景

RFC-001 §5.4 定义了冷归档机制:超过 30 天的 log 和 signal 数据导出为 JSONL 文件,释放 SQLite 空间。

需求

1. Meta 表

log-store.ts 的 schema 中新增 meta 表:

CREATE TABLE IF NOT EXISTS meta (
  key   TEXT PRIMARY KEY,
  value TEXT NOT NULL
);

2. archiveLogs(dataDir, retentionDays?) 函数

  • 默认 retentionDays = 30
  • meta.archived_up_to
  • 按天导出到 data/archive/logs/YYYY-MM-DD.jsonl(幂等覆盖)
  • 同一事务:DELETE 该天数据 + UPDATE meta.archived_up_to
  • 可选 VACUUM

3. CLI: nerve logs archive

手动触发归档。

验证

  • 单元测试:meta 表读写、归档逻辑、幂等性、崩溃恢复
  • 集成测试:写 log → 归档 → 验证 JSONL + DB 清理

参考

  • packages/daemon/src/log-store.ts
  • docs/rfc-001-observation-engine.md §5.4
## 背景 RFC-001 §5.4 定义了冷归档机制:超过 30 天的 log 和 signal 数据导出为 JSONL 文件,释放 SQLite 空间。 ## 需求 ### 1. Meta 表 在 `log-store.ts` 的 schema 中新增 `meta` 表: ```sql CREATE TABLE IF NOT EXISTS meta ( key TEXT PRIMARY KEY, value TEXT NOT NULL ); ``` ### 2. `archiveLogs(dataDir, retentionDays?)` 函数 - 默认 `retentionDays = 30` - 读 `meta.archived_up_to` - 按天导出到 `data/archive/logs/YYYY-MM-DD.jsonl`(幂等覆盖) - 同一事务:DELETE 该天数据 + UPDATE `meta.archived_up_to` - 可选 VACUUM ### 3. CLI: `nerve logs archive` 手动触发归档。 ### 验证 - 单元测试:meta 表读写、归档逻辑、幂等性、崩溃恢复 - 集成测试:写 log → 归档 → 验证 JSONL + DB 清理 ### 参考 - `packages/daemon/src/log-store.ts` - `docs/rfc-001-observation-engine.md` §5.4
This repo is archived. You cannot comment on issues.
No Label
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/nerve#38