Conversation
Owner
Author
|
按最新要求,阶段准入清单与阶段任务文件仅保留在本地,不进入 GitHub。 |
There was a problem hiding this comment.
🔵 Needs a closer look
Synchronize the authoritative development plan or explicitly defer this document until that plan is merged.
Pull request overview
This PR adds Phase 5 planning and admission documentation without business-code, migration, or OpenAPI changes.
Changes:
- Adds S5-00–S5-09 tasks, contracts, dependencies, feature flags, and acceptance criteria.
- Adds the Phase 5 admission checklist and validation records.
File summaries
| File | Summary |
|---|---|
docs/taget/阶段五准入清单.md |
Phase 5 admission criteria and baseline validation records |
docs/taget/第五阶段目标任务.md |
Phase 5 task planning and implementation contracts; phase numbering conflicts with the authoritative plan |
Review details
Suppressed comments (15)
docs/taget/第五阶段目标任务.md:7
- 该阶段划分与仓库当前的权威计划不一致:
docs/HaoBlog 完整开发计划.md:545-551仍将阶段 5 定义为 AI 基础、阶段 7 定义为创新体验,并把音乐/PWA/404 放到 V1.1;本 PR 又没有提交那份计划的同步修改。合并后会出现两套阶段编号,后续实施者无法判断 S5-01~S5-09 是否取代原阶段 5。请同步权威计划,或明确本文件必须等那份修改一起合入后才生效。
This issue also appears in the following locations of the same file:
- line 45
- line 77
- line 94
- line 108
- line 334
docs/taget/第五阶段目标任务.md:77
- 这里承诺
GET /api/v1/public/site增加featureFlags,但公开接口契约没有定义字段形状或固定 key,只有后面的表格列出名称。由于 S5-01 要求 OpenAPI 与生成客户端一致,后续实现无法据此生成稳定的 DTO 和非法/未知 flag 校验;请明确固定对象(或数组)的 schema、默认值以及未知字段行为。
docs/taget/第五阶段目标任务.md:95 - S5-02 要求单击节点显示摘要,但
KnowledgeGraphNode只有 label、href、weight 和 publishedAt,且文档明确禁止为此拉取全文,因此没有可用于面板的受限摘要字段。请增加带长度上限的可选 summary/description,或把验收标准改为只显示现有字段。
docs/taget/第五阶段目标任务.md:112 - 这里的响应没有表示图谱数据版本的字段,只有
generatedAt;而前文和 S5-01 又要求稳定 ETag/304。若generatedAt按请求生成,它会使每次响应都产生新 ETag;若它要充当版本,契约没有定义其稳定性。请明确稳定 revision/generatedAt 语义,并规定 ETag 基于规范化图数据而不是请求时间计算。
docs/taget/第五阶段目标任务.md:79 - 此处同时标成 Nuxt Server Route/静态边界,但后文要求服务端按运行时配置拉取、校验并在上游失败时回退;静态资源无法执行这一信任边界,浏览器直取上游也会绕过 host/授权校验。请固定为服务端清单路由(或明确构建期生成),并定义上游超时与缓存行为。
docs/taget/第五阶段目标任务.md:81 /sw.js位于站点根路径;若注册时未显式指定 scope,Service Worker 默认可控制整个/,包括/articles、/studio和/api,这与本文件要求只覆盖工具箱的边界冲突。请要求以scope: '/tools/'注册或把脚本放到/tools/下,并在验收中检查 registration.scope。
docs/taget/第五阶段目标任务.md:295- 这里将音乐 UI 约定为
role="region",但 HaoBlog 的设计硬约束要求终端、AI 抽屉和音乐播放器采用role="dialog"、aria-modal与aria-live。按当前文字实现会漏掉播放器的模态/焦点语义,S5-08 也无法据此验收;请明确播放器交互面板的 dialog、aria-modal、焦点恢复和 live 区域。
docs/taget/第五阶段目标任务.md:130 - 该结构允许
OTHER_AUTHORIZED条目的attributionUrl为 null,但下方又要求每首曲目必须有授权说明或归属链接;当前 schema 没有授权说明字段,因此非法清单可以通过“必填字段”校验却无法向用户展示授权依据。请让相应许可证的证据字段必填,或为OTHER_AUTHORIZED增加明确的授权说明字段。
docs/taget/第五阶段目标任务.md:334 - 按现有工具页实现,
/tools的目录数据来自/api/v1/public/tools,请求失败时会回退为空列表;这里又禁止缓存 API 响应,只允许静态资源/页面壳缓存。这样离线打开或客户端导航到/tools时无法保证目录和五个内置工具仍可用。请定义版本化的静态工具目录/快照(以及动态工具 chunk 的缓存),或明确缓存完整的/toolsSSR 快照,同时保持不缓存用户输入和写 API。
docs/taget/第五阶段目标任务.md:292 - 仅校验 OSS/CDN 的 HTTPS host 不能保证频谱可用:跨源
<audio>接入MediaElementSource还要求音频响应提供允许当前站点的 CORS header,并由播放器设置合适的crossOrigin;否则播放可能正常但 Web Audio 分析会被浏览器跨源策略阻断。请把 CORS 要求加入 manifest/来源契约和验收,或限制为同源音频。
docs/taget/第五阶段目标任务.md:45 - 这里禁止新增迁移并把 flags 放到服务端配置,但完整开发计划规定
site_setting是 Feature Flag 的存储源(docs/HaoBlog 完整开发计划.md:505),当前 schema/实体也只有comments_enabled(V10__comment_model_and_flags.sql:1-3、SiteSetting.java:14)。在 clean checkout 上没有定义这七个 flag 的配置键、持久化来源或更新入口,无法同时满足两份契约;请选择 env/application config 作为新的 canonical source 并同步主计划,或把现有site_setting扩展纳入迁移和管理接口。
docs/taget/第五阶段目标任务.md:78 - 这里把 ETag 列入“图谱 JSON”的内容清单,但下面的
KnowledgeGraphResponse没有etag字段,而现有站点契约将 ETag 放在 HTTP 响应头并配合 304。请明确 ETag 仅通过 HTTP 响应头提供,否则实现者会在 JSON body 与 headers 之间形成两种不兼容的契约。
docs/taget/第五阶段目标任务.md:77 GET /api/v1/public/site当前响应使用public, max-age=0, s-maxage=60, must-revalidate(PublicSiteController.java:24-26)。把 kill-switch flags 放进同一份响应并要求保留该缓存语义后,共享缓存仍可能在关闭后最多 60 秒继续下发true,与现有“可即时关闭”的约束冲突。请定义独立的不可缓存/版本化 flag 投递或明确 TTL/purge 语义,不要直接继承站点内容缓存。
docs/taget/第五阶段目标任务.md:115- 这里仅给出“默认上限”并把实际值留到后续观测,但 S5-01 又要求冻结契约,S5-02/S5-08 还依赖硬上限和可复现资源预算。客户端和验收无法知道真实最大节点、边及响应体大小,超限截断也无法按同一边界复现。请固定 hard max(至少包括节点/边、字符串、响应体和权重范围)并定义超限行为,运行观测只用于验证而不是让上限漂移。
docs/taget/第五阶段目标任务.md:135 - 这里把清单规模写成“建议最多 30 首”,但 S5-05 验收要求条目上限;Nuxt 服务端还要先读取外部 manifest。若没有固定的服务端条数、响应体和字段长度上限,膨胀的清单可能在校验前消耗不受控的内存和带宽。请把这些限制定义为服务端硬拒绝/截断规则,客户端校验仅作第二道防线。
- Files reviewed: 2/2 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
变更
验证
范围说明