数据库设计
后端选择
| 环境 | 后端 |
|---|---|
| 本地开发(默认) | SQLite(零配置) |
生产(设置 DATABASE_URL) | PostgreSQL |
选择逻辑在 memex.core.task_manager._database_backend():DATABASE_URL 存在且 scheme 为 postgres/postgresql 时走 PG,否则回退 SQLite。
职责边界
数据库(权威状态):books · wiki_repositories · jobs · job_queue · job_events · job_steps · token_usage · settings · wiki_state · wiki_runtime · api_tokens
文件系统(证据层):wiki 页面、review jsonl、preview 产物、butler 行为日志
长期目标:文件作为证据层,数据库作为运行态权威层。
核心表
jobs
记录 Wiki 构建任务主状态,是控制面任务列表、调度与恢复的入口。
关键字段:id · wiki_slug · target_dir · lang · status · phase · error · owner_username · started_at · completed_at
token_usage
每个 job phase 的 token 数、cost、duration,用于成本分析和运行时 dashboard。
job_steps / job_events
job_steps:结构化步骤日志,用于前端阶段详情和失败复盘job_events:流式事件(review、log),用于 SSE 回放和结构化审计
wiki_state
每个 wiki 的聚合状态缓存:egg_done · birth_done · grow_done · corpus_chars · page_count · wiki_chars,用于 overview 和 grow 预估。
wiki_runtime
保存 serve/butler 运行态,用于 preview 状态恢复和 runtime 管理。
api_tokens
Bearer token 的 hash 与角色信息(admin/user)。