浅念
|
e905cba729
|
feat(db): 0006 构建/验收/审计域 + 追加式审计
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:24:18 +08:00 |
|
浅念
|
2b017ed197
|
feat(db): 0005 路由注册表——exact/collision 双键 + NULLS NOT DISTINCT 唯一
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:14:46 +08:00 |
|
浅念
|
1cc0dcc57f
|
feat(db): 0004 媒体域——assets/usages 双唯一
media_assets 双唯一 UNIQUE(site_id, source_url) / UNIQUE(site_id, public_path)
+ status 四值 enum + source_id 可空;media_usages 复合主键
(media_asset_id, content_revision_id, field_path),无独立 id/时间戳(spec §5.5)。
vitest fileParallelism: false——不可变表清场 DISABLE/ENABLE TRIGGER 是库级 DDL,
与并行文件的不可变断言竞态(实测 media 清场窗口内 content 断言偶发放行);
串行执行消除竞态,套件仅数秒。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 20:02:57 +08:00 |
|
浅念
|
bc1dcc2ef9
|
feat(db): 0003 分类域——taxonomy/term/content_terms
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:48:04 +08:00 |
|
浅念
|
3b45219bbd
|
feat(db): 0002 内容域——entry/locale/revision + 修订不可变 + 回填 content_entry FK
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:36:19 +08:00 |
|
浅念
|
32ceba58f0
|
feat(db): 0001 来源域——connection/snapshot/job/record + 快照不可变触发器
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:27:31 +08:00 |
|
浅念
|
5da883cd40
|
docs(plan): Task 6 勾选;schema 注释编号对齐
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:19:54 +08:00 |
|
浅念
|
63830f249e
|
feat(db): 0000 站点域——sites/site_config_revisions + 唯一约束
drizzle-kit 首个迁移从 0000 起编号(计划文案写 0001,以实际产出为准)。
迁移文件 + meta/_journal.json + snapshot 一并入库。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:17:16 +08:00 |
|
浅念
|
39734a7467
|
fix(api): requireDatabaseUrl 早失败守卫;typecheck 门禁;build 排除 test;池生命周期注释
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 19:10:19 +08:00 |
|
浅念
|
514f37301e
|
feat(api): NestJS standalone 骨架 + Drizzle/postgres.js 接入
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-20 18:56:50 +08:00 |
|