docs(patrol): 2026-06-25 文档维护#787
Conversation
同步 hrygo#779/hrygo#784 引入的后端契约(时序在 hrygo#781 文档巡逻之前,未被覆盖): - PATCH /api/workspaces/{id} 补 body 字段语义:worker_preference 指针三态 (省略=不更新 / 空串=清除回默认 / 非空=设置),与 name、agent_config_overrides 的"空串=不更新"显式区分;work_dir 不可变整合说明 - GET /api/admin/invitations 补响应字段 is_expired(服务器计算:未被使用且已过期, 规避客户端时钟漂移) Refs hrygo#779 hrygo#784 Co-Authored-By: Claude <noreply@anthropic.com>
hotplex-ai
left a comment
There was a problem hiding this comment.
Code Review — hotplex-ai
Verdict: APPROVE-equivalent(COMMENT,因 GitHub 禁止 self-approve 本 PR 作者即 hotplex-ai) | P0:0 P1:0 P2:0 P3:1
纯文档巡逻 PR(docs/reference/admin-api.md +4 行),补齐 #781/#779/#784 引入的两处后端契约文档。两个并行 sub-agent 已将 diff 中全部 5 条技术声明逐条核对源码,无阻塞性问题。
技术声明核对(全部通过)
| 声明 | 源码证据 | 结论 |
|---|---|---|
worker_preference 三态(省略/空串清除/非空设置) |
workspace_handlers.go:162 *string、:209 nil 跳过、:211-214 空串经 ValidateType 合法并写回默认值、:213 非空非法返回 400 INVALID_WORKER_TYPE |
✅ 准确 |
name/agent_config_overrides 空串=不更新 |
workspace_handlers.go:190 if req.Name != ""、:193 if req.AgentConfigOverrides != "" |
✅ 准确 |
work_dir 不可变 → 400 WORK_DIR_IMMUTABLE |
workspace_handlers.go:177-179 |
✅ 准确 |
is_expired = 未被使用 AND 已过期(非 OR) |
user_handlers.go:126 inv.UsedAt == nil && inv.ExpiresAt < now,:119-122 服务端计算字段 |
✅ 准确(AND 语义未误写) |
PATCH CAS 409 WORKSPACE_VERSION_MISMATCH 与新段落无矛盾 |
workspace_handlers.go:219-221 |
✅ 准确 |
错误码字符串与源码逐字符一致;「见上」指代有效;blockquote 风格与上下文一致;git blame 确认变更窗口叙述准确。
P3 — 信息性提示(非本 PR 责任,不阻塞)
错误码表 / swagger.json 对 workspace 端点覆盖不全:INVALID_WORKER_TYPE、WORK_DIR_IMMUTABLE 仅出现在 prose,未进底部「错误码表」(docs/reference/admin-api.md:308-322);docs/swagger/swagger.json 完全未覆盖 /api/workspaces/* 与 /api/admin/invitations。这是基线既有文档债(main 上 WORK_DIR_IMMUTABLE 就已在 prose 但不在表中),本 PR 沿用既有「prose 提及即可」惯例,未引入或恶化不一致。建议后续单独开 docs 巡回 PR 统一补齐。
Reviewed by automated pipeline · 2 parallel sub-agents · 源码核对覆盖 workspace_handlers.go / user_handlers.go / registry.go / multitenancy_store.go
Summary
变更窗口:自基线
a42de781(#775)以来 3 个提交(#781 / #779 / #784)。后端仅 2 个 Go 文件契约变更,时序最早的 #781 文档巡逻未覆盖其后 #779/#784 引入的契约。/api/workspaces/{id}补 body 字段语义:worker_preference指针三态(省略=不更新 / 空串=清除回默认 / 非空=设置),与name、agent_config_overrides「空串=不更新」区分/api/admin/invitations补响应字段is_expired(服务器计算:未被使用且已过期)构建验证:
build-docs通过,55 篇文档零断链。diff +4 行,精准克制。Closes #786
🤖 Generated with Claude Code