feat(server): 同步引擎与 seed(阶段 4)

- 引擎:tick(5 分钟 + 防重入 + 启动即跑)· 单轮串行遍历 active key · 日志整批单事务入库(ON CONFLICT DO NOTHING + log_synced_at 取请求发起时刻)· 额度采集(上游字段全组,独立 try)· QPU 采样(基线 / 值变化才追加)· 每轮摘要与超期 warning
- 401 状态机:N=3 摘除(disabled_source=auto_401);403/500/网络不计数;解密失败跳过不计数
- 纯逻辑抽层:policy(计数 / 合并判定)· dedupe(去重键与内容指纹)· log-row(日志映射,与 seed 共用)
- seed 脚本(幂等):假 key + 984 条日志 + QPU 基线 + 示例购买
- 实测:401 端到端 1→2→3 摘除且摘除后不再轮询;幂等重跑新增 0 条
- 实证发现:错误行 request_id 不唯一(8 组 ×3)——记入实施计划「待定问题 #5」与 upstream 文档,待作者裁决
- AGENTS.md / 根 package.json 增 seed 命令
This commit is contained in:
2026-09-15 00:46:46 +08:00
parent 4b5d21a418
commit e1c6d2153e
14 changed files with 623 additions and 37 deletions
+2 -1
View File
@@ -17,7 +17,8 @@
"type-check": "bun run --filter '@naku/web' type-check && bunx tsc --noEmit -p apps/server",
"db:generate": "bun run --filter '@naku/server' db:generate",
"db:migrate": "bun run --filter '@naku/server' db:migrate",
"db:push": "bun run --filter '@naku/server' db:push"
"db:push": "bun run --filter '@naku/server' db:push",
"seed": "bun run --filter '@naku/server' seed"
},
"devDependencies": {
"typescript": "^6.0.0"