Repository navigation
Conversation
HappyAuratus
left a comment
There was a problem hiding this comment.
审查结论:Request changes。审查 commit:e9b29ba3aae15ee0fb768ab3acc7a012c6609c9e。
-
[P1] model 请求过不了真实 HTTP 边界(
internal/core/scheduled_task_api.go:77,145)。本次新增读取 model,但internal/api/router/router.go:179,182的 POST/PATCH Fields 没有 model,实际请求在 router.go:397–409 被返回 400 unknown_field。OpenAPI 和生成 client 的请求类型也没有 model;新增 integration 测试直接调用 Store.Public,绕过了这个边界。请同步路由输入、契约、生成产物和前端模型选择,并补真实 HTTP create/update 测试。 -
[P1] 重新同意也过不了 HTTP 边界(
internal/core/scheduled_task_api.go:238–243)。撤销后 enable 新增要求 approval,但/enable路由 Fields 仍为 nil,携带 approval 会被拒为 unknown_field,不携带则 approval_policy_invalid。前端 enable 也只发{}。请接通输入契约及重新同意 UI,并以实际 HTTP 验证 revoke → fresh consent → enable 的闭环。 -
[P1] 停用创建仍会在没有明确同意时记录授权(
frontend/src/features/scheduled-tasks/scheduled-task-form.tsx:259,387–396)。默认 enabled=false 时风险说明/checkbox 隐藏且创建可提交;api.ts:64 却无条件发送 approval,服务端创建同时写入 unattended_policy 和 consented_at。随后启用可复用这份并非用户明确给出的授权。请让持久化授权严格对应用户显式同意,覆盖停用保存、启用、重新同意路径;现有新增测试仅检查文案出现,没有验证提交门禁或请求。 -
[P1] 已保存模型不参与运行绑定(
internal/core/scheduled_task_api.go:115–120,188–192)。本次只有表列、CRUD 和 revision 变化;scheduled_task_worker.go:183–208 的资格检查及 snapshot/enqueue 从未读取 task.model,仍根据当前个人默认/agent 配置绑定。因此模型 A 的任务即使成功存下,触发时仍可能用 B,修改个人默认后也会漂移。请把任务选择接入模型资格检查和运行输入冻结,并测试默认变化及任务后续编辑不会改变既有运行的模型。 -
[P2] 新失效事件没有刷新任务列表/历史(
internal/core/public.go:244–245)。事件不带任务标识,SpaceEvent schema 也未声明任务标识;更直接的问题是frontend/src/features/spaces/use-space-events.ts:81–114没有该事件分支,落到仅刷新 me/spaces 的 fallback。另一个标签页修改/删除任务后,已打开任务列表及历史保持旧数据。请按 D7 补足标识和前端消费,并增加实际缓存失效测试。
已完整检查本 PR 九个改动文件及相邻 router、worker、前端 API/SSE 消费路径;GitHub 当前 checks 全绿,但上述边界没有被新增的直接 Store.Public 测试覆盖。以上问题应在本交付修复后复审,不能把必要的请求契约及前端接线转交 CI/owner 执行。
|
已处理的 3 项 Go 接线(commit \6d873a9\):
未完成、不冒称已解决:
当前缺少的验证环境:本地只有 Go 1.27.0 且离线(\go\ 指令要求 1.27.1,自动下载失败),无法本地编译 Go 改动、跑 \ ask openapi\ / \ ask frontend:generate\ 或 PostgreSQL integration。剩余完整清单见 circus#566。 本 PR 保持 OPEN / needs-author,不把部分完成标记为全部解决。 |
Refs ora-space/circus#566。
#445 剩余契约义务(承接清单 6)的最小正确收口,7 项全部落地:
space.scheduled_tasks_updatedSpace 事件(任务列表/历史刷新)。completed→succeeded、failed/cancelled原样、非终态→running;failed·timeout仍只由截止事实 +cancelled决定。404 not_found。0063加model列;create/update/read 处理 model,改 model 递增 revision。approval,撤销后重新启用恢复 consent。creatorUserId暴露:任务资源与契约增加creatorUserId。契约:
internal/contract/openapi.go+api/openapi.json同步(新增creatorUserId/model与事件枚举space.scheduled_tasks_updated)。测试:
integration/scheduled_task_contract_obligations_test.go覆盖 model 持久化+revision、撤销后重同意、绑定 issue 删除后读取 404。待办(依赖工具链,CI/owner 侧执行)
task openapi+task frontend:generate再生成前端 client(本地无 Go 1.27.1 / 前端工具链,api/openapi.json为手工同步)。npm run check与测试(D5 表单改动需补一条表单测试)。