咨询:分类和扣点同时进行(寒暄退点沿用现有做法,计费不变) #162

Open
opened 2026-10-29 11:15:48 +08:00 by Claude · 4 comments
Collaborator

从 #135 拆出(jesse 10-28 选 A:第一步关思考不做;「分类与扣点同时进行」另起一单,先把寒暄退点的做法写清楚给你过目,再动手)。Part of #118。

现在是什么顺序(frontend/src/app/api/consult/route.ts::runTurn,staging 上核对过)

  1. 内容审核 + 读档案(这两步已经并行)
  2. 扣点:reserveCredit → reserve_consultation_usage(点数此时就扣掉,记一笔「预留」)
  3. 写入问题:appendQuestion
  4. 分类:classifyConsultationTurn,判断是不是寒暄,最多等 3 秒
  5. 寒暄 → completeSmalltalk → complete_consultation_free:把扣的点原样退回(记一笔「退款」,预留标为已释放),回一句寒暄;不是寒暄 → 正常排盘回答

第 4 步要等第 2、3 步做完才开始,一个问题首字前白等最多 3 秒。

寒暄退点:已经有了,这单不改

查下来,「寒暄先扣后退」现在就是这样做的(BUG-976 的修法),退点用的是数据库里现成的同一个函数,扣多少退多少,账上有扣、有退两条记录。所以这单不需要新的退点做法,计费的顺序和金额一点不变。

打算怎么改

  • 审核(第 1 步)通过后,分类和「扣点 + 写入」同时开始;等两边都完成,再按分类结果走原来的寒暄 / 正常两条路。
  • 分类不提前到审核之前:没通过审核的话,不把用户原话发给分类模型。
  • 扣点失败(余额不足、服务不可用)时,照现在一样直接返回提示;分类的结果丢掉不用,最多白调一次分类模型。
  • 不改数据库、不改任何计费函数、不改退点金额。

用户能感觉到的变化

真问题首字前快最多约 3 秒;寒暄照旧免费(先扣后退),账单记录和现在一样。

验收

  • 新测试锁住:分类在审核之后、与扣点 / 写入同时开始;寒暄仍走 complete_consultation_free 退回同样点数;扣点失败时不进入分类分支。
  • 现有计费测试(consult-settlement-20261013、consultation-billing、consultation-smalltalk*)全过。
  • staging 上实测:首字前耗时(prep.classify 不再串在 prep.append 后面)。

你回「同意」我就动手(Claude 直接做,前端一处改动);有疑问在这里说。

从 #135 拆出(jesse 10-28 选 A:第一步关思考不做;「分类与扣点同时进行」另起一单,先把寒暄退点的做法写清楚给你过目,再动手)。Part of #118。 ## 现在是什么顺序(`frontend/src/app/api/consult/route.ts::runTurn`,staging 上核对过) 1. 内容审核 + 读档案(这两步已经并行) 2. **扣点**:`reserveCredit` → `reserve_consultation_usage`(点数此时就扣掉,记一笔「预留」) 3. **写入问题**:`appendQuestion` 4. **分类**:`classifyConsultationTurn`,判断是不是寒暄,最多等 3 秒 5. 寒暄 → `completeSmalltalk` → `complete_consultation_free`:**把扣的点原样退回**(记一笔「退款」,预留标为已释放),回一句寒暄;不是寒暄 → 正常排盘回答 第 4 步要等第 2、3 步做完才开始,一个问题首字前白等最多 3 秒。 ## 寒暄退点:已经有了,这单不改 查下来,**「寒暄先扣后退」现在就是这样做的**(BUG-976 的修法),退点用的是数据库里现成的同一个函数,扣多少退多少,账上有扣、有退两条记录。所以这单**不需要新的退点做法**,计费的顺序和金额一点不变。 ## 打算怎么改 - 审核(第 1 步)通过后,**分类和「扣点 + 写入」同时开始**;等两边都完成,再按分类结果走原来的寒暄 / 正常两条路。 - 分类不提前到审核之前:没通过审核的话,不把用户原话发给分类模型。 - 扣点失败(余额不足、服务不可用)时,照现在一样直接返回提示;分类的结果丢掉不用,最多白调一次分类模型。 - 不改数据库、不改任何计费函数、不改退点金额。 ## 用户能感觉到的变化 真问题首字前快最多约 3 秒;寒暄照旧免费(先扣后退),账单记录和现在一样。 ## 验收 - 新测试锁住:分类在审核之后、与扣点 / 写入同时开始;寒暄仍走 `complete_consultation_free` 退回同样点数;扣点失败时不进入分类分支。 - 现有计费测试(`consult-settlement-20261013`、`consultation-billing`、`consultation-smalltalk*`)全过。 - staging 上实测:首字前耗时(`prep.classify` 不再串在 `prep.append` 后面)。 **你回「同意」我就动手(Claude 直接做,前端一处改动);有疑问在这里说。**
Claude added the agent/试点agent/需拍板 labels 2026-10-29 11:15:50 +08:00
Author
Collaborator

@jesse #135 拆出的这单写好了做法:查下来寒暄「先扣后退」现在就是这样做的,所以计费完全不用改,只是让分类和扣点同时开始。回「同意」我就动手。

<!-- agent:claude escalate --> @jesse #135 拆出的这单写好了做法:查下来寒暄「先扣后退」现在就是这样做的,所以计费完全不用改,只是让分类和扣点同时开始。回「同意」我就动手。
Owner

同意

同意
Claude added agent/规划中 and removed agent/需拍板 labels 2026-10-29 11:45:14 +08:00
Author
Collaborator

按你同意的做法改好了,已推上 staging(68670b28),等自动部署。

  • 内容审核通过后,「是不是寒暄」的判断和扣点、记下问题同时开始;以前要等那两步做完才开始,真问题首字前最多快约 3 秒。
  • 计费一点没动:寒暄照旧先扣后退,用的还是原来那个退点函数;扣点失败照旧直接提示,不会多扣。
  • 审核没通过的话,不会把原话发给分类模型。
  • 新加了一个计时,部署后能直接看出「记下问题之后还要等分类多久」。
检查 结果
类型检查 / lint 0 错
咨询计费、寒暄、首帧相关测试 71 条全过(5 条按新顺序改了写法,原值 / 新值 / 原因都写在测试里)
前端全量 5339 条,没过的 25 条都是要 Docker / 数据库的测试,和改动前同一批,无新增

记为 BUG-1499。部署好了我再 @你,真机清单:docs/testing/consult-classify-parallel-20261029.md(含「发你好,余额不变」这一条)。

<!-- agent:claude review sha=68670b28195b8758947cfff5d488caa0131d5a50 verdict=pass staging=68670b28195b8758947cfff5d488caa0131d5a50 checklist=docs/testing/consult-classify-parallel-20261029.md --> **按你同意的做法改好了,已推上 staging(`68670b28`),等自动部署。** - 内容审核通过后,「是不是寒暄」的判断和扣点、记下问题**同时开始**;以前要等那两步做完才开始,真问题首字前最多快约 3 秒。 - **计费一点没动**:寒暄照旧先扣后退,用的还是原来那个退点函数;扣点失败照旧直接提示,不会多扣。 - 审核没通过的话,不会把原话发给分类模型。 - 新加了一个计时,部署后能直接看出「记下问题之后还要等分类多久」。 | 检查 | 结果 | | --- | --- | | 类型检查 / lint | 0 错 | | 咨询计费、寒暄、首帧相关测试 | 71 条全过(5 条按新顺序改了写法,原值 / 新值 / 原因都写在测试里) | | 前端全量 | 5339 条,没过的 25 条都是要 Docker / 数据库的测试,和改动前同一批,无新增 | 记为 BUG-1499。部署好了我再 @你,真机清单:`docs/testing/consult-classify-parallel-20261029.md`(含「发你好,余额不变」这一条)。
Claude added agent/部署中 and removed agent/规划中 labels 2026-10-29 11:55:35 +08:00
Author
Collaborator

已部署到 staging(68670b28),@jesse 可以真机验收了。 门禁、迁移、部署全部成功;登录页正常,未登录访问账户接口被拒绝(401)。

真机清单:docs/testing/consult-classify-parallel-20261029.md

# 操作 应该看到
1 用一张星盘问一个具体问题 正常回答;首字比以前快一点
2 只发「你好」或「谢谢」 回一句寒暄;点数余额不变
3 点数不足时发一个问题 照旧提示「咨询点数不足」,不会多扣
<!-- agent:claude deployed sha=68670b28195b8758947cfff5d488caa0131d5a50 --> **已部署到 staging(`68670b28`),@jesse 可以真机验收了。** 门禁、迁移、部署全部成功;登录页正常,未登录访问账户接口被拒绝(401)。 真机清单:`docs/testing/consult-classify-parallel-20261029.md` | # | 操作 | 应该看到 | | --- | --- | --- | | 1 | 用一张星盘问一个具体问题 | 正常回答;首字比以前快一点 | | 2 | 只发「你好」或「谢谢」 | 回一句寒暄;点数余额不变 | | 3 | 点数不足时发一个问题 | 照旧提示「咨询点数不足」,不会多扣 |
Claude added agent/待真机 and removed agent/部署中 labels 2026-10-29 12:45:53 +08:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#162