问 VedAstro 失败时记住一天,不再每轮重等 #130

Open
opened 2026-10-28 06:02:34 +08:00 by Claude · 2 comments
Collaborator

来自 #118 代码体检(体检第 5、10 条),清单第 11 单。由 Claude 直接实现,不交 Grok。

问题

咨询每次调 consultation_workflow,快照不命中就新开 3 个 Python 子进程问 VedAstro(实测 0.4 s/次,生产估最多 1.5 s/领域);只有成功结果进前台缓存,失败只在适配层记 300 s,免费额度被限流时几乎每轮重等。校正交付期 /v5/vedastro-validate 同样失败即每轮重跑(最坏约 15 s)。

改法

失败或限流按(盘, 日期)记一天(产品 10-28 定:一天);只用于展示覆盖率的目录查询挪到后台;校正交付期的校验结果按(证据指纹, 候选对)同样负缓存,Python 侧超时不超过前端。

验收标准

同一张盘当天第二次调用 ≤0.15 s,vedastro_gateway 字段与改前一致;成功路径输出逐字节不变;全量 pytest 与基线一致。

规矩

  • 基于 origin/staging,独立工作树 codex/*;只改这一件事。
  • BUG 号开工时按 docs/BUG_HISTORY.md 全文件取最大号 +1。
  • 同时改 frontend/src/app/(app)/page.tsx 的单按清单顺序串行。
  • 体检报告:docs/research/code_health_audit_2026_10_28.md(staging a31b6dda3)
来自 #118 代码体检(体检第 5、10 条),清单第 11 单。**由 Claude 直接实现,不交 Grok。** ## 问题 咨询每次调 `consultation_workflow`,快照不命中就新开 3 个 Python 子进程问 VedAstro(实测 0.4 s/次,生产估最多 1.5 s/领域);只有成功结果进前台缓存,失败只在适配层记 300 s,免费额度被限流时几乎每轮重等。校正交付期 `/v5/vedastro-validate` 同样失败即每轮重跑(最坏约 15 s)。 ## 改法 失败或限流按(盘, 日期)记一天(**产品 10-28 定:一天**);只用于展示覆盖率的目录查询挪到后台;校正交付期的校验结果按(证据指纹, 候选对)同样负缓存,Python 侧超时不超过前端。 ## 验收标准 同一张盘当天第二次调用 ≤0.15 s,`vedastro_gateway` 字段与改前一致;成功路径输出逐字节不变;全量 pytest 与基线一致。 ## 规矩 - 基于 origin/staging,独立工作树 `codex/*`;只改这一件事。 - BUG 号开工时按 `docs/BUG_HISTORY.md` 全文件取最大号 +1。 - 同时改 `frontend/src/app/(app)/page.tsx` 的单按清单顺序串行。 - 体检报告:`docs/research/code_health_audit_2026_10_28.md`(staging `a31b6dda3`)
Claude added the agent/试点agent/排队 labels 2026-10-28 06:02:37 +08:00
Author
Collaborator

已改完,推上 staging(b9a5415e,同一批,线上版本将是 8a72aa5b),正在部署。

  • 咨询:VedAstro 被限流或拿不到官方数据时,按「这张盘 + 当天」记下失败(按你定的,记一天)。当天再问,直接用这份记录,不再起子进程去等。实测:第二次 0.15 秒以内(单子要求 ≤0.15 秒),返回给回答的 VedAstro 那一栏和第一次完全一样;第二天会重新问。成功时和以前完全一样,成功结果不会被当成失败记下。
  • 校正交付:外部校验因为 VedAstro 自身失败(超时、异常、没拿到官方数据)时,按「同一批证据 + 同一对候选时间」记一天,下一轮不再重跑;由证据本身决定的结果(通过、分不开)不记,照常算。整个校验限 11 秒(前端只等 12 秒),时间够的调用用原来的超时,所以正常情况结果逐字节不变。
  • 没做的一件:体检提到把「只用来展示覆盖率的目录查询」挪到后台。挪了会改变第一次调用返回里目录相关的字段,和本单「成功时输出逐字节不变」冲突,所以没挪;成功结果当天已有缓存,重复的轮次本来就不再查目录。
  • 检查:Python 快速门全部 Python 步骤通过;既有 VedAstro 和校正校验测试全过;新增 7 条测试;测试夹具同时隔离了负缓存目录,避免测试之间串。记为 BUG-1479。
  • 不需要专门真机看。部署好了我再说。
<!-- agent:claude review sha=b9a5415e verdict=pass staging=8a72aa5b446cf20271cbce715bde75a021682f7e checklist=- --> 已改完,推上 staging(`b9a5415e`,同一批,线上版本将是 `8a72aa5b`),正在部署。 - **咨询**:VedAstro 被限流或拿不到官方数据时,按「这张盘 + 当天」记下失败(按你定的,记一天)。当天再问,直接用这份记录,不再起子进程去等。实测:第二次 0.15 秒以内(单子要求 ≤0.15 秒),返回给回答的 VedAstro 那一栏和第一次完全一样;第二天会重新问。成功时和以前完全一样,成功结果不会被当成失败记下。 - **校正交付**:外部校验因为 VedAstro 自身失败(超时、异常、没拿到官方数据)时,按「同一批证据 + 同一对候选时间」记一天,下一轮不再重跑;由证据本身决定的结果(通过、分不开)不记,照常算。整个校验限 11 秒(前端只等 12 秒),时间够的调用用原来的超时,所以正常情况结果逐字节不变。 - **没做的一件**:体检提到把「只用来展示覆盖率的目录查询」挪到后台。挪了会改变第一次调用返回里目录相关的字段,和本单「成功时输出逐字节不变」冲突,所以没挪;成功结果当天已有缓存,重复的轮次本来就不再查目录。 - 检查:Python 快速门全部 Python 步骤通过;既有 VedAstro 和校正校验测试全过;新增 7 条测试;测试夹具同时隔离了负缓存目录,避免测试之间串。记为 BUG-1479。 - 不需要专门真机看。部署好了我再说。
Claude added agent/部署中 and removed agent/排队 labels 2026-10-28 12:45:21 +08:00
Author
Collaborator

@jesse 已部署到 staging(线上版本 a614895a,前端和排盘服务都是这一版;门禁、数据库迁移、部署三步都成功,登录页 200、未登录读账户 401 正常)。

不需要专门真机看;VedAstro 被限流时,同一张盘当天第二次问不再多等。

没问题请关单,有问题直接在这里说。

<!-- agent:claude deployed sha=a614895a2b77d154830d830fdec333ac3fe1d239 --> @jesse 已部署到 staging(线上版本 `a614895a`,前端和排盘服务都是这一版;门禁、数据库迁移、部署三步都成功,登录页 200、未登录读账户 401 正常)。 不需要专门真机看;VedAstro 被限流时,同一张盘当天第二次问不再多等。 没问题请关单,有问题直接在这里说。
Claude added agent/待真机 and removed agent/部署中 labels 2026-10-28 14:11:51 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#130