docs(tasks): product answers for the closed-beta briefs (Feishu alerts, restore on failure, rate limits, label copy)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
13bde11539
commit
74384be024
@@ -52,7 +52,7 @@
|
||||
| 项 | 内容 | 验收 |
|
||||
| --- | --- | --- |
|
||||
| T0 | 核对 staging 与生产主机规格(vCPU、内存、`JYOTISH_HEAVY_COMPUTE_CONCURRENCY` 实际值);在 staging 用现有代码跑一次 T4 的压测作为**改前基线**(若 #57 未合入,记清楚) | 进度记录有规格对照与改前数字 |
|
||||
| T1 | 按用户限流:`requestRateLimits` 新增 `consult`(建议 6 次 / 分钟、60 次 / 小时两档,用两个桶)、`rectificationTurn`(建议 10 次 / 分钟)、`reportGenerate`(建议 3 次 / 小时,与每日 5 份并存)。接入 `/api/consult`、校正回合路由(`frontend/src/app/api/rectification/agent/route.ts`,开案 `cases/open` 不计入)、报告生成 `frontend/src/app/api/reports/route.ts` POST。超限回 429 + `code: "rate_limited"` + `Retry-After`,**在扣点 / 预留之前**判断,不扣点 | 单元测试:各桶边界放行 / 拒绝、拒绝时不调用扣点 RPC;路由测试断言 429 体与头 |
|
||||
| T1 | 按用户限流:`requestRateLimits` 新增 `consult`(**10 次 / 分钟、120 次 / 小时**两档,用两个桶)、`rectificationTurn`(**5 次 / 分钟、40 次 / 小时**两档)、`reportGenerate`(建议 3 次 / 小时,与每日 5 份并存)。接入 `/api/consult`、校正回合路由(`frontend/src/app/api/rectification/agent/route.ts`,开案 `cases/open` 不计入)、报告生成 `frontend/src/app/api/reports/route.ts` POST。超限回 429 + `code: "rate_limited"` + `Retry-After`,**在扣点 / 预留之前**判断,不扣点 | 单元测试:各桶边界放行 / 拒绝、拒绝时不调用扣点 RPC;路由测试断言 429 体与头 |
|
||||
| T2 | 重计算闸短排队:`acquire_heavy_compute_slot` 改为带超时等待(建议最多等 8 s,等待者上限 = 4),超时或等待者满仍抛 `HeavyComputeBusy`;`Retry-After` 不变。前端 `/api/consult` 对 `workflow_rate_limited` 按 `Retry-After` 最多重试 2 次、总等待 ≤ 15 s,期间进度行显示一句「人有点多,排一下队」(文案进 VOICE);仍失败时用一句话说明并退回本轮预留点数(沿用现有失败结算路径,核实不重复退款) | Python 测试:并发 3 个请求,第 3 个在前一个释放后拿到位;等待者满时立刻 429;超时 429。前端测试:429 → 重试 → 成功;三次都 429 → 失败文案 + 退点(复用现有结算断言) |
|
||||
| T3 | 内测点数上限:核实兑换码表能否设单码点数与批量生成(后台「兑换码」页),写一页操作说明 `docs/operations/beta-invite-codes.md`:怎么批量生成邀请码、每码点数、怎么查谁用了、怎么作废。不写真实码 | 文档;若后台缺批量生成或作废能力,写进进度记录与 BLOCKED,不在本单扩功能 |
|
||||
| T4 | 冒烟压测脚本(放 `frontend/scripts/research/beta-load-smoke.mts`,不进镜像,确认不被 `frontend/src` 引用——参照 BUG-1140 / `runtime-sources-no-test-imports.test.ts`):N 个虚拟用户(10、20 两档),每人:OTP 登录 → 首轮咨询 → 一次追问;其中 3 人改为开一次校正并答 2 题。记录:每请求状态码、首字时间、整轮完成时间、429 比例;同时在服务器侧采样 API / web 容器内存与 CPU(`docker stats` 每 5 s,执行方没有 staging SSH 时写成环境缺口,只报客户端侧) | 进度记录给改前 / 改后两组数字。**通过线**(10 并发):429(最终失败,不含重试成功)≤ 2%;5xx = 0;咨询首字 P95 ≤ 15 s、整轮 P95 ≤ 90 s;API 容器内存峰值 < 1.5 GB。20 并发只记录不设门,用来定内测同时在线上限 |
|
||||
@@ -84,3 +84,9 @@ git worktree add -b codex/beta-capacity-20261014 .worktrees/beta-capacity-202610
|
||||
3. 每个邀请码给多少点;内测第一批多少人(压测 20 并发的结果出来后再定同时在线上限)。
|
||||
4. 压测会花模型调用费用(约 20 人 × 2 轮 × 两次),同意在 staging 跑。
|
||||
5. 若 Grok 侧拿不到 staging 主机 SSH,服务器内存 / CPU 采样由谁跑(Claude 也没有主机权限时写成环境缺口)。
|
||||
|
||||
## 11. 产品答复(2026-10-14,覆盖上文对应建议值)
|
||||
|
||||
1. 限流:产品要「对话多一些、校正少一些」→ 对话 10 次 / 分钟 + 120 次 / 小时;校正回合 5 次 / 分钟 + 40 次 / 小时;报告 3 次 / 小时(+ 每日 5 份)不变。T1 表格已按此改。
|
||||
2. 压测花模型费:**同意**(staging 10 / 20 并发各一轮,按 T4)。
|
||||
3. 其余(排队长度与等待时间、每码点数、首批人数)按任务书建议默认值执行,产品后续可改。
|
||||
|
||||
@@ -98,3 +98,8 @@ grep -rn "chat-composer" frontend/tests | head # 找按源码文本断言的
|
||||
2. 标识文案:对话「回答由 AI 生成,仅供参考,不构成医疗、法律或投资建议。」、报告「本报告由 AI 生成,仅供参考。」——同意或改字;以及同意改 DESIGN「输入框下方不放东西」这条的字面。
|
||||
3. 冒烟清单由谁走:产品用 staging 测试邮箱 + 固定验证码真机走,还是先由 Claude 用接口层(无浏览器)走一遍可接口化的条目(他人报告、「你好」不扣点、限流),再由产品补真机部分。
|
||||
4. 生产首发后,冒烟清单是否在生产再走一遍(建议走前 5 条,用产品自己的账号)。
|
||||
|
||||
## 11. 产品答复(2026-10-14,覆盖上文对应建议值)
|
||||
|
||||
1. 标识文案**同意**:对话「回答由 AI 生成,仅供参考,不构成医疗、法律或投资建议。」;报告「本报告由 AI 生成,仅供参考。」
|
||||
2. BUG-1063 修法按决策记录 2(逐列只读授权)。
|
||||
|
||||
@@ -87,3 +87,8 @@ git worktree add -b codex/beta-safety-net-20261014 .worktrees/beta-safety-net-20
|
||||
3. **备份保留**:默认 Gitea artifact 14 天 + 主机本地 7 天;有更长要求(如 30 天)告诉 Claude,注意 Gitea 服务器磁盘。
|
||||
4. **恢复演练时间**:内测开放前执行一次,约 30 分钟,不影响线上(还原到一次性库)。
|
||||
5. **每日汇总发送时间**:默认 09:00。
|
||||
|
||||
## 11. 产品答复(2026-10-14,覆盖上文对应建议值)
|
||||
|
||||
1. 告警渠道:**飞书群机器人**(Webhook 地址由产品在主机 / runner 的环境里配置,不进仓库、不进日志)。T3 按飞书机器人消息格式实现(`msg_type: text`,可选签名校验)。
|
||||
2. 其余按任务书建议默认值。
|
||||
|
||||
@@ -133,3 +133,9 @@ git worktree add -b codex/release-path-production-20261014 .worktrees/release-pa
|
||||
3. **`20260921010000` 已归档会话全部回到列表**:确认这是想要的(该迁移对应「取消归档功能」的产品决定)。
|
||||
4. **迁移演练在哪执行**:主机上由产品执行脚本,或给 Claude 一次受控的主机只读 + 一次性库操作权限(默认前者)。
|
||||
5. **回滚口径**:首发失败时是否接受「恢复点整库还原」(会丢失首发后写入的数据);内测开放前失败则无影响。
|
||||
|
||||
## 11. 产品答复(2026-10-14,覆盖上文对应建议值)
|
||||
|
||||
1. 首发时间窗:首发前一天冻结代码推送(只许纯文档);首发失败**接受整库还原**到首发前恢复点。
|
||||
2. 迁移演练由**产品本人**在 Gitea 上点按钮执行(Grok 只交脚本与 runbook);runbook 写成产品可照做的步骤,每步写清看哪个输出判断通过。
|
||||
3. `20260925030000`(他人档案时间退回 reported):演练时先数生产受影响行数(预期 0,生产停在 08-16、人物档案 09 月下旬才上线),非 0 则停下报产品。
|
||||
|
||||
Reference in New Issue
Block a user