← 返回周目标完成情况

首页换模板整份替换

2026-10-15,工作树 .claude/worktrees/home-tpl,分支 fix/workbench-template-replace,基于 origin/develop 85931717。

起因与决定

白晨在开发环境的首页上换成「自由创作者」或「创业者」模板后,底下仍挂着日程、行业资讯、项目中心几张「即将上线」占位卡。两套模板的定义本身不含这几类(apps/web/src/features/workbench/rules/templates.ts 的 TEMPLATES,后端首读 apps/api/app/workbench/states.py 一致)。这几张卡来自旧版首页的默认布局:旧版后端首读会写入团团、消息、今日行动、日程、项目中心、我的任务、行业资讯、我能接的单(git show f27eca96:apps/api/app/workbench/states.py)。新版照原型 app.js template 的做法,把自己加回的卡和不属于任何模板的卡接在末尾保留下来,所以换哪套模板,这几张卡都还在。

白晨 10-15 定:换模板就是换成跟模板一模一样,之前加的模块一律清掉;不换模板的老账号继续看旧布局,属于预期,不做数据迁移。

改动

验证

分档:tools.ci.affected --tier --base origin/develop --business-rule 判中档(12 个文件、跨目录、改了场景、声明了业务规则)。

项 结果 证据
前端单元测试(改动文件相关选测) 153 个文件 1908 例,1904 通过,失败的 4 例与基准完全相同(见下文);工作台目录 47 个文件 632 例全部通过,templates.ts、panels.ts、WorkbenchPage.tsx、WorkbenchToolbar.tsx 行/分支/函数/语句覆盖全是 100%(覆盖为本会话 npx vitest run src/features/workbench --coverage 所得,未单独留证) .artifacts/testing/workbench-template-replace/20261015T090602.068878Z-30309e9200fa4aed948aa2750a112164/;基准 .artifacts/testing/workbench-template-replace-base/20261015T090638.708561Z-319af73177ed4f69810536f1d040e6a6/
改动前先红 改测试后、改实现前跑同一套:4 例失败(提示语、面板说明、页面换模板两例) 本会话记录,未留运行目录
浏览器场景(含模板的全部场景) 13 例全部通过:AC-206(改写后,含换前 7 张核对)、AC-210、AC-211、AC-213、AC-110、AC-101 及屏障与统计 最终版 .artifacts/testing/workbench-template-replace/20261015T090414.167948Z-3c5bd21a079f4820bfea82d8422597e6/;首版(换前核对加入前)20261015T084444.688110Z-…;中间一版把换前核对写进共用步骤、AC-211 因此失败(应 7 实 5),改为只在 AC-206 前置给出时核,原失败记录 20261015T090217.181843Z-c71dbdddf9654d5bb9fc14a09a96d8ef/
缺陷注入 临时把换模板改成「旧布局里新模板没有的卡全部接在末尾」(比原 applyTemplate 留得更多,原逻辑会留 7 张):AC-206 失败(工作台卡片数应为 5、实为 9),注入已撤销 .artifacts/testing/workbench-template-replace/20261015T085352.565650Z-10de40d6dcbb48228ae9370d0f34d4d3/
变异测试(分批这一步) templates.ts 98.43%(4 个存活变异体,第 189、190、192、209 行,全在没动过的 score/growWidget;另 2 个超时计为已杀),panels.ts 100% .artifacts/testing/workbench-template-replace/20261015T085352.565650Z-10de40d6dcbb48228ae9370d0f34d4d3/previous/.artifacts/mutation/batches/
lint、三份类型检查、场景检查 通过 npm run lint、npm run type-check、make lint-acceptance BASE=origin/develop

已知问题与未跑项