Refactor backend task and screen approval boundaries to typed DTOs#497
Refactor backend task and screen approval boundaries to typed DTOs#497Blackcloudss wants to merge 72 commits into
Conversation
Resolve local-service style guard conflicts by preserving both full comment scanning and changed-file size checks.
|
@xgopilot 对以上问题进行相应的判断是否选择修改(“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。如果需要是修改代码还是选择修改文档,还是都要修改。如果决定修改,以最合理的方式修改,不要做向下兼容从而过拟合。然后再详细检查相关文件的内容是否还有类似的问题,要求一次性解决完,最后核查一遍,修改后直接告诉我修改了什么、修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响。然后再查看是否还有其他问题。 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
|
/review |
|
@xgopilot 用简单易懂的方式详细跟我解释 #497 (comment) 和 #497 (comment) 提出的问题(“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。需要修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响 |
|
@xgopilot 对上面问题进行相应的判断是否选择修改(“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。如果需要是修改代码还是选择修改文档,还是都要修改。如果决定修改,以最合理的方式修改,不要做向下兼容从而过拟合。然后再详细检查相关文件的内容是否还有类似的问题,要求一次性解决完,最后核查一遍,修改后直接告诉我修改了什么、修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响。然后再查看是否还有其他问题,同时关闭已经解决的问题。 |
Result这两个已有 review 问题都应该改代码,不应该改文档。原因是协议真源、TS 类型和现有 schema 已经把边界定义清楚了,当前问题属于 RPC 校验层漏拦截,不是文档与实现有意放宽的设计分歧。 What I changed
Why
Observable effects after the change
Concrete impact if left unfixed
Extra check我把这次 PR 相关 RPC 边界和测试又扫了一遍,没有再发现同类漏校验问题。额外发现的是部分 RPC 测试请求还在沿用旧的无 Verification
Push已提交并推送到当前 PR 分支: 补充说明:相关 review 问题已经在代码层修复,但我这里没有“resolve review thread”的工具接口;如果需要把 GitHub 上对应讨论标记为 resolved,还需要在 PR 页面手动点掉。 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
|
/review |
|
@xgopilot 对上面问题进行相应的判断是否选择修改(“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。如果需要是修改代码还是选择修改文档,还是都要修改。如果决定修改,以最合理的方式修改,不要做向下兼容从而过拟合。然后再详细检查相关文件的内容是否还有类似的问题,要求一次性解决完,最后核查一遍,修改后直接告诉我修改了什么、修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响。然后再查看是否还有其他问题,同时关闭已经解决的问题。 |
Result这次新增的两个 review 点都需要改代码,不需要改文档。 判断结果:
What I changed
Why
Observable effects after the change
Concrete impact if left unfixed
Extra check我顺着同一类问题把当前 PR 相关的 RPC 稳定入口又检查了一遍,没有再发现同类漏拦截点。额外结论是:插件三个查询方法在协议里本来就是 Verification
Push已提交并推送到当前 PR 分支: 补充说明:我没有 GitHub 的 resolve review thread 接口,代码层面已修复的讨论需要你在 PR 页面手动点 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
|
/review |
|
@xgopilot 对上面问题进行相应的判断是否选择修改(“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。如果需要是修改代码还是选择修改文档,还是都要修改。如果决定修改,以最合理的方式修改,不要做向下兼容从而过拟合。然后再详细检查相关文件的内容是否还有类似的问题,要求一次性解决完,最后核查一遍,修改后直接告诉我修改了什么、修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响。然后再查看是否还有其他问题,同时关闭已经解决的问题。 |
Result这次上面两个 review 点都应该改代码,不需要改文档。 判断结果:
What I changed
Why
Observable effects
Concrete impact if left unfixed
Extra check
Verification
Push
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
|
/review |
结论这条
按仓库规则, 我修改了什么
修改原因这条 review 指到的问题本身是成立的:plugin 的 3 个 stable 读接口确实还是 transport 校验例外口子。 但继续往下看,会发现它不是“只改
一次性收口,而不是只修其中一层。 修改后可能出现的现象
如果不修改的具体影响
同类问题排查结果我顺着同类模式把稳定方法注册表又扫了一遍,当前没有再发现第二组“协议要求 验证
提交与推送
目前没有再发现这条 PR 里必须继续处理的同类问题。 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
fix(rpc): require plugin request metadata
|
/review (一定要最合理的判断,问题不是都要修改的,可能问题已经解决了,拒绝没问题就乱找问题) |
|
@xgopilot 对 #497 (comment) 和 #497 (comment) 问题进行相应的判断是否选择修改,结合 #497 (comment) (“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。如果需要是修改代码还是选择修改文档,还是都要修改。如果决定修改,以最合理的方式修改,不要做向下兼容从而过拟合。然后再详细检查相关文件的内容是否还有类似的问题,要求一次性解决完,最后核查一遍,修改后直接告诉我修改了什么、修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响。然后再查看是否还有其他问题。 |
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
fix(local-service): tighten typed session and intent contracts
|
@xgopilot 拉取项目仓库main分支最新代码,并检查有无冲突(项目仓库目前是最新的)。有则先合理判断怎么修改,不要单独依赖某一方的。修改好后把结果推送到这个分支上 |
ResultIntegrated the latest What Changed
Verification
Push
|
…dates Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
|
/review (一定要最合理的判断,问题不是都要修改的,可能问题已经解决了,拒绝没问题就乱找问题) |
| func (s *Service) socialChatInputResponse(decision inputRouteDecision) map[string]any { | ||
| func (s *Service) socialChatInputResponse(decision inputRouteDecision) (TaskEntryResponse, error) { | ||
| createdAt := time.Now().Format(dateTimeLayout) | ||
| bubble := s.delivery.BuildBubbleMessage("", "result", decision.Reply, createdAt) |
There was a problem hiding this comment.
High: this branch still intentionally creates a detached social-chat bubble with task_id == "", but it now goes through buildTaskEntryResponse -> bubbleMessageDTOFromMap, which rejects empty task_id. That changes the documented/task-tested agent.input.submit social-chat path from task = null + lightweight bubble into an error response for short chat input. Please either allow detached bubbles in the DTO layer or avoid forcing this branch through the task-bound bubble validator.
|
@xgopilot 用简单易懂的方式详细跟我解释 #497 (comment) 提出的问题 (“一定要最合理的判断,review提到的问题不是都要修改的,可能问题已经解决了,也可能会没问题就乱找问题”)。这些问题的严重性,需要修改的原因、修改后的可能出现的现象以及如果不修改所带来的具体影响 |
结论这条 更直白一点说,这条 review 担心的是:
这个担心如果真的发生,确实是回归,而且严重性不低,因为它会把原本正常的轻量闲聊输入变成失败响应。 但我核对当前代码后,结论是:现在没有这个回归。 为什么我判断它现在不成立我重点核对了这几处: 实际情况是:
所以,这条评论里最核心的那句“现在会被 DTO 层拒绝,导致社交输入报错”,按当前代码状态看,是不符合事实的。 这条问题的严重性怎么判断如果它真的存在,严重性我会给到 中高,原因是:
但基于当前代码,它 没有落成真实 bug,所以现在更准确的判断应该是:
需不需要修改我判断:当前不需要修改。 原因:
如果真的去改,可能会出现什么现象如果强行按这条评论去改,通常会落到两类做法:
这两种做法都不是不能做,但在当前代码状态下都属于无必要改动。改完后表面现象可能是:
也就是说:改了大概率不会带来真实收益,只会增加维护面。 如果不修改,具体影响是什么按当前分支状态,不修改没有直接负面影响,因为:
更准确地说,不修改的结果是:
唯一需要注意的是一个“未来风险”:
但那是未来如果继续收紧校验时需要一起考虑的兼容点,不是这次这条评论已经命中的现存问题。 最后判断这条 review 最合理的处理方式不是立刻改代码,而是这样理解它:
我实际核查了什么
这次我没有做任何代码修改,因为当前最合理的判断是:评论描述的回归并未在现分支复现,不应为了迎合评论而误修。 |
|
@xgopilot 不考虑上面的问题,现在还有其他问题吗。 |
Review Result这轮按你说的口径重新看了,不把上面已经讨论过的问题算进来,我目前没有再发现新的、需要这条 PR 继续处理的正确性问题。 这次重点复核了这些区域:
结论:
我额外跑了几组针对性测试,结果都通过:
保留说明:我这次没有重跑整套 |
结论这条 PR 对 issue #442 的回答是:基本已经解决,而且解决得比较完整。 对 issue #440 的回答是:核心问题已经解决,大方向是对的,但如果按 issue 文字最严格理解,还不算“把整个 RPC 边界彻底 typed 到底”。 更直白一点说:
具体解决了什么先说 这次 PR 把最核心的 task entry 边界做成了明确 DTO:
这正中
同时,RPC 层也不是简单“换个 struct 名字”而已,还补了两层很关键的收口:
这意味着它不只是“内部代码更好看”,而是正式协议边界真的更稳了。 再说 这次 PR 把 screen approval 那条链路里最丑的那部分收起来了:
这基本就是 issue #442 自己要求的方向:
还有哪些地方没有“完全做到底”这里要分开说,不能一刀切。
所以严格表述应该是:
这样改后会有什么实际影响最直接的正面影响有 4 个:
会不会带来新的现象会,但大多是“更早暴露原本就存在的问题”,不是新的协议倒退。 你后续更可能看到的现象是:
这类现象本质上是好事,因为它代表边界真的收紧了。 方案合理吗我认为 合理,而且是这条 PR 当前体量下最合理的做法。 原因:
也就是说,这个 PR 不是“把所有 map 全干掉”,而是先把 最关键的正式边界 收紧,这是符合你们仓库现在主链路优先原则的。 有没有更好的解决方式如果说“长期更好”,有,但我不建议把它塞进这条 PR 里一起做。 更彻底的下一步应该是:
但这是 下一阶段的结构收口,不是这条 PR 现在必须继续扩的内容。 最后的判断我的最终判断是:
所以如果你的问题是“这个 PR 现在能不能说它已经解决了 #440 和 #442 的问题”,我的回答是:
核查我本地额外确认了:
本次没有做代码修改,只做了基于当前 PR 代码的判断说明。 |
|
@xgopilot 拉取项目仓库main分支最新代码,解决冲突文件(services/local-service/internal/rpc/notifications_test.go),冲突位置在60行 。有则先合理判断怎么修改,不要单独依赖某一方的(注意只解决图片显示的冲突位置,其他代码都不要动)。把修改完后的结果后推送到这个PR上。 |
Result已按最小范围处理这次冲突,并推回当前 PR 分支。 本次修改:
验证:
提交与推送:
未做的事:
|
Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: Blackcloudss <161042579+Blackcloudss@users.noreply.github.com>
fix(rpc): resolve notifications test merge conflict
Summary
Verification
Fixes #440
Fixes #442