fix: 接受截止时间前发起的 dispatch readiness 成功结果 - #28
Conversation
|
Claude finished @why-tomato's task in 2m 29s —— View job 任务清单
Review 结论通过 问题及建议未发现需要阻塞合并的问题。残余风险:
改动范围克制(仅调整判断顺序 3 行 + 新增回归测试),未发现无关改动或 secret/权限相关问题。 |
|
Claude finished @why-tomato's task in 6m 11s —— View job 任务清单
Review 结论有条件通过 问题及建议
其余改动( |
整体审查结论:当前 HEAD 仍有 1 个 P1这个 PR 是 Xunfei 切换链路的 dispatch readiness 辅助修复,改动范围本身很小;但当前 [P1] 外层无条件 deadline 检查仍会丢弃已经拿到的成功 participant
throwIfDeadlineExpired(getDeadline(), 'agent dispatch readiness');如果查询在 deadline 前发起、deadline 后返回一个有效 participant,这里会先抛错,成功结果永远进不了下一行的 success branch。也就是说, 建议把 deadline check 移到 除这项外,没有发现与本 PR 范围有关的新阻塞问题。它能修复切换时序,但不替代 lex-voice livekit-examples#271 / lex-reflex #5 的 owner 退役和能力等价工作。 |
|
Claude finished @why-tomato's task in 2m 41s —— View job 任务清单
Review 结论通过 问题及建议未发现需要阻塞合并的问题。此前两轮 review(含
残余风险(非本 PR 引入,基线代码已有,仅供后续关注):
因未获得 Bash 工具执行权限,本次未能实际运行 |
审查结论:PR 28 本身通过,但不能作为 Xunfei 迁移完成的依据当前 HEAD 按这个 PR 描述的迁移目标,我同时对照检查了 lex-voice#271 和 lex-reflex#5。把设备连接、原始音视频和 AIUI 下沉到端侧,把业务识别留在云端,这个方向合理;但迁移本身仍有以下问题。 [P1] lex-voice 的旧 Xunfei owner 仍然公开且可运行
这不是完整的 owner 迁移。库调用方仍能绕开该 guard 启动旧链路,使 lex-voice 与 lex-reflex 同时成为设备 owner,产生重复连接、端口冲突或双重发布。最小修复是删除或取消导出旧 Xunfei capture、AIUI、room-input session 入口及其旧测试,只保留云端 decoder、projector、识别和交互逻辑。 [P1] 两仓协议样例已经漂移,并且
|
背景
dispatch readiness 查询可能在 deadline 前发起,但在查询返回时已经越过 deadline。
原实现会先判断 deadline,再检查查询结果,导致查询已经返回 ready Agent 和
room_video_input时仍被判定为超时,最终/api/session/dispatch返回 502,前端恢复逻辑随后断开已经工作的会话。修改
回归测试
新增两个确定性行为测试:
修改前 ready 用例稳定失败;修改后两条用例均通过。
验证
tsc --noEmit:通过git diff --check:通过