fix(rectification): surface pricing failures and persist opening question
This commit is contained in:
@@ -6974,3 +6974,35 @@
|
||||
- 相关记录:无
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-455 | 定价配置异常被通用运行失败吞掉
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-31
|
||||
- 最近更新:2026-08-31
|
||||
- 影响面:POST `/api/rectification/agent`、POST `/api/consult`、POST `/api/reports`、`FeaturePricingError` 错误映射
|
||||
- 用户现象:环境没有发布对应 feature/model tier 定价时,生时校正显示通用“暂时不可用,请稍后再试”,咨询和报告也只落入通用 503;文案暗示重试,但实际需要运维发布定价配置。
|
||||
- 触发条件:`resolve_feature_pricing` 返回 `feature_pricing_missing`、`feature_pricing_model_unavailable` 或其他 fail-closed 定价错误。
|
||||
- 根因:三个付费入口没有保留 `FeaturePricingError.code`;生时校正把 reserve 异常统一改成 `billing_unavailable`,随后又未在外层显式映射而落到 `run_failed`,consult/reports 则由通用 catch 吞掉。
|
||||
- 修复:三个入口均只把 `FeaturePricingError.code` 写入脱敏服务端日志;生时校正保留内部 `feature_pricing_*` reason,并统一映射为公开 `billing_unavailable`;咨询和报告统一返回 `pricing_configuration_unavailable`。用户文案明确“计费配置不可用/尚未完成,请联系支持”,不返回内部错误原文。
|
||||
- 验证:新增三入口路由契约,断言内部 code 被保留、公开错误不落入 `run_failed`、响应不包含 `error.message`;TypeScript、ESLint、billing/consult/report 聚焦回归通过。rectification 聚焦套件 `705/705`;全量 `2368/2369`,唯一失败为默认 `python3` 缺少 PyYAML,指定已有 PyYAML 的解释器后原失败文件 `39/39` 通过。真实 staging 定价行与日志因本地无环境凭据未验证。
|
||||
- 防复发:付费入口必须把配置缺失与瞬时运行错误分开;内部日志记录稳定 code,公开响应只使用安全错误码和可执行文案。部署完成不等于定价可用,仍须通过 admin flow 发布当前环境实际 model tier 的定价。
|
||||
- 相关记录:无
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-456 | opening 成功后未持久化当前问题槽
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-08-31
|
||||
- 最近更新:2026-08-31
|
||||
- 影响面:POST `/api/rectification/agent` opening 成功路径、`persistNextInterviewIfIdle`、`ensureNonTerminalTurnExit`
|
||||
- 用户现象:开场回复正文看起来提出了问题,但服务端 `current_question` 仍为空,页面显示“当前没有可回答的问题,正在等待服务端更新”。
|
||||
- 触发条件:新 Case 执行 `action=opening` 且 Agent 没有自行调用可持久化 focus 的工具。
|
||||
- 根因:成功轮后的问题槽持久化与非终态出口检查都被限制在 `action === "message"`;opening 只保存散文回复,没有建立服务端拥有的可回答问题槽。
|
||||
- 修复:成功的 `opening` 与 `message` 一起执行 `persistNextInterviewIfIdle`;随后执行 `ensureNonTerminalTurnExit`,在仍无问题且没有已确认、用户停止或真实可采用承载时确定性补出问题。`read_only` 保持无副作用,不纳入该分支。
|
||||
- 验证:回归锁定 opening/message 共用问题槽持久化与非终态出口路径,并以真实 `persistNextInterviewIfIdle` fixture 断言投影后的 `current_question` 非空;TypeScript、ESLint 与 rectification 聚焦套件 `705/705` 通过。未进行真实 staging opening smoke。
|
||||
- 防复发:任何会启动或推进 Case 的成功非终态轮都必须以服务端状态结束:存在 `current_question` 或真实可采用承载;不得以模型正文是否包含问句代替结构化状态。
|
||||
- 相关记录:BUG-452、BUG-453
|
||||
- 复发自:BUG-452(非终态出口只覆盖 message,未覆盖 opening)
|
||||
- 修复版本:待发布(Skill 保持 `10.0.13`)
|
||||
|
||||
Reference in New Issue
Block a user