Skip to content

ops: 验证并监控 durable scan Cron 鉴权与持续排水 #117

Description

@AsperforMias

优先级与责任

P0,活动前阻断项。生产环境变量、Vercel Cron 日志和告警由 owner 主责;代码侧指标、前置校验和 runbook 由工程 PR 实现。

背景

durable public scan 的主要消费者是 Vercel Cron:

  • 路径:GET /api/internal/public-scan
  • 鉴权:Authorization: Bearer CRON_SECRET
  • 当前节奏:每 5 分钟一次
  • 单次预算:最多 24 步或 50 秒

事故期间该接口持续返回 401。三天后的活动会带来集中并发,因此必须证明队列持续排水,而不是只成功调用一次。

Owner 要求

  • 确认当前 Production deployment 包含 CRON_SECRET。
  • 确认至少连续三个调度周期返回 2xx。
  • 记录 processed、exhaustedBudget、持续时间和失败状态,不记录账号或 secret。
  • 确认套餐允许目标频率;临时提高频率必须重新部署并验证。
  • 配置连续两次未运行或非 2xx 的告警。
  • 准备仅 owner 可见的人工排水 runbook。

Code 要求

  • 增加 last successful drain、连续失败次数、canonical 队列深度、最老任务年龄和 phase 分布。
  • fix(version): 将 #111 正式版本规范化为 v9/v9/v4 #126 后 worker 只能排 canonical v4 job;误发布 v5 job 必须单独统计为 obsolete,不能继续消耗 GitHub 或阻塞 active-job 上限。
  • 缺少生产必需环境变量时阻止 promotion。
  • Cron 响应必须区分 processed、idle、budget exhausted 和 obsolete work。
  • 不修改评分算法,不恢复 LLM delta,不产生新的版本 bump。

验收标准

  • Cron 连续三个周期成功调用。
  • 有 canonical 任务时队列深度或最老任务年龄持续改善;无任务时明确 idle。
  • obsolete job 不被执行,也不计入 canonical queue health。
  • secret 缺失或错误能在上线前发现。
  • Cron 停止排水后不超过两个周期即可告警。
  • 监控、日志和 issue 不包含 secret、凭据或账号标识。
  • 活动前完成 queued、running、complete、failed、obsolete 路径演练。

依赖:#123。关联:#120#124#126

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions