caoqianming
|
bcd2b90942
|
refactor(storage): 失败埋点拆出 telemetry.py + kind 契约常量化;补 wecom 加解密测试
收官三小项(架构审查残余):
- core/storage/telemetry.py:四个留痕函数(malformed/salvaged/empty/run_error,
cost 恒 0)从 usage.py 迁出——「usage=计费」心智不再被埋点污染(数据层 Top4);
kind 字符串升为常量,loop/llm_transport(写)与 toolfail(读 SQL)两侧共用
同一事实源,此前靠字面量约定、改名会静默漏读。core.storage.__init__ 转发
出口不变,调用面仅 web/runs.py 一处改 import
- tests/test_wecom_crypto.py:7 用例,企微回调加解密(WXBizMsgCrypt 等价实现)
测试侧按同方案自造密文,覆盖验签/receiveid/padding 各失败路径——wechat 子系统
(审查 Top3 零测试)中唯一可纯测的一块补上
- DB 测试探针补 connect_timeout=5:测试库挂掉时快速降级 skip,不再把整个
discovery 挂死在 TCP 建连上(Docker engine 打嗝时实测挂死过)
带测试库 351 全过 / 无测试库 341 过(DB 组干净 skip)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 14:21:45 +08:00 |
caoqianming
|
7568ceeb48
|
test(scheduler): 补 core/scheduler 服务层测试(审查 Top3 缺口)+ DB 测试门控收紧
- tests/test_scheduler.py:纯逻辑(cron 校验/next_run 墙钟时区折算/run message
包装)+ DB 级(create 校验、claim 推进 next_run 不重复认领、disabled/软删/
过期不认领、连续失败自动停用、skipped 不动计数)。认领类用例统一用 2000 年
纪元时间,claim_due_jobs(now=纪元) 只可能命中测试 job,永不触碰真实 job
- **DB 测试门控收紧(test_scheduler + test_usage_report)**:只认显式
ZCBOT_TEST_DB_URL,绝不回退 .env 的 ZCBOT_DB_URL —— 实锤教训:.env 的 URL
经隧道指向生产库,测试插入的到点 job 被生产 green 实例调度守护认领并真跑了
agent(4 次一句话迷你调用,费用几厘,产物已按测试专属 user 全量清理,零残留)
- RUN.md:环境段补 ZCBOT_TEST_DB_URL 说明,故障兜底表加一行
301 测试全过(未设测试库时 DB 组自动 skip)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 13:00:13 +08:00 |
caoqianming
|
7354578aaa
|
refactor(storage): 计费读侧收口 core/storage/usage_report.py + 首批 DB 级测试
风险点(架构审查 P0#2):UsageEvent.units JSONB 的 key 由 usage.py 写入,
读侧 cast(units[...].astext) 却散在 web/admin.py 与 web 各处硬编码——写读
跨文件隐式耦合且零测试,改 key 会静默算错计费统计。
- 新增 core/storage/usage_report.py:units 读侧唯一出口(列表达式单一事实
源),含 task_usage_aggregates(逐 task 批量)/ usage_overview(全局+7d
趋势)/ models_usage(按模型)/ user_usage_page(按用户分页)
- web/admin.py 三个内联聚合函数删除,改调 usage_report;web 层不再出现
任何 JSONB cast(grep 已核)
- web/common.usage_aggregates 移除,tasks/schedules 路由改引 core 版
- tests/test_usage_report.py:6 个 DB 级测试锁口径(cost 全 kind 合计、
token/cache_hit 仅 chat、task_id 可空的 kb_ingest 不进 task 聚合、cutoff
过滤、用户分页含档案字段)。无 PG 自动 skip;只插/删测试专属 user 的行。
发现并记录:ZCBOT_DB_URL 平时靠 import litellm 的隐式 dotenv 进 env,
测试显式从 .env 抠 key 不背 8s 重依赖。
292 测试全过,测试数据零残留。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 10:33:13 +08:00 |