fix(server): 修复 INT-184 与 INT-186 合并后的语义冲突(main 编译失败) #169
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
fjbobo/fast_ship!169
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/int184-int186-merge"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
相关需求
INT-184(main 集成修复,无独立需求条目):#17
改动内容
405d131a把 INT-184(#166)与 INT-186(#167)合并进 main 时,两分支改了同一批文件但没有文本冲突,整合状态编译失败——即 main 目前是坏的。本 PR 修复这三处语义冲突:AgentScreenshotImage签名:INT-186 把返回改成(AgentScreenshotFile, error)(缩略图/缩放变体下发),INT-184 R13 的「缺失文件按原因归因」分支仍写return "", "", errs.New(...)→too many return values。改为AgentScreenshotFile{},行为不变:文件缺失仍按 40406 带出已记录的asset.Error(而非落到 handler 的 500)。review_screenshot_ast_test:INT-186 把ReviewAgentScreenshot.Url从string改成*string(omitempty,失败行字段缺省),INT-184 的「缺失文件不给 URL」用例需按指针语义断言(Url == nil)。review_screenshot_scale_test:40406 断言从errors.Is改为按错误码。理由:INT-184 的缺失文件归因返回同码带原因的消息(这是 errs 包既有约定,ErrReviewResultInvalid注释明确「同码 40004,消息里写明具体字段」),而AppError没有按码的Is方法,errors.Is对定制消息实例不成立。实测给AppError全局加按码Is会给 3 处依赖「同码区分」的既有逻辑带来行为变化(TestBotPersonaFrozenDuringHold等失败),故不采用全局方案,只把该断言改成按码判定。修改范围
server/internal/service/review_assets.go(缺失文件归因分支适配新签名)server/internal/service/review_screenshot_ast_test.go(Url 指针语义断言)server/internal/service/review_screenshot_scale_test.go(40406 按码断言 + 调用行)本地验证
在整合后的代码(
405d131a+ 本 PR 三个修复)上跑:cd web && pnpm api-types --checkopenapi-typescript --check生成物一致)cd web && pnpm check(lint + typecheck)cd server && gofmt -l ./go vet ./...cd server && go test -count=1 ./...验证方式(命令 / 无头浏览器):
go test -count=1 ./...在整合状态全量运行;本 PR 只改服务端类型适配与测试断言,无界面变化启动命令:不适用(无运行时行为变化,纯编译/测试适配)
验证提交 SHA:b080d936
应用可以启动(编译失败已修复,整合状态
go build ./...通过)异常或空状态已验证(覆盖:文件缺失走 40406 带原因、缩略图缩放变体生成、失败行字段缺省)
已修复的基线问题
cd server && go build ./...(internal/service/review_assets.go:1064: too many return values),修复提交b080d936。端到端截图
无界面变化(纯服务端编译适配 + 测试断言),按模版删去对比表。替代证据:整合状态
go build/go vet/go test -count=1 ./...全绿(19 包),以及TestAgentScreenshotImageScale(INT-186 侧 40406 语义与缩略图路径)与 INT-184 的缺失文件归因用例同时通过。未验证范围与原因
TestAgentScreenshotImageScale的 missing 用例 +TestAgentScreenshotsMissingFileReportsReason)。API 变更说明
无(INT-186 的 API 字段变更已在 #167 完成;本 PR 只是让实现与它对齐)。
创建 PR 前完成
审查意见处理
$pr-review-loop自动等待审查结果并处理新意见,直到收敛(第 2 轮 fastship-bot 全部组合通过,检查全过)代码审查 ·
e0ed7e2· 第 2 轮全部组合通过,未发现 P0–P2 问题。
cliproxyapi/deepseek-v4.1-flash · pi
thinking=low
复审说明:推送新提交后会自动重新审查。
PR#169 第 1 轮 Note 处置(
e0ed7e25)第 1 轮 0×P0–P2,2 条 Note 全部 Act on:
asset.Error优先级仍全绿。已补:给asset-missing行种error = "下载超时",断言appErr.Message等于该原因。并做了变异验证:把实现改回裸 sentinel 时该用例失败(message = "问题图片不存在"),恢复后通过——R13 的「按原因归因」契约现在有回归闸。server 全量
go test -count=1 ./...19 包全绿 + gofmt + vet 干净。推送自动触发下一轮审查。