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 定:换模板就是换成跟模板一模一样,之前加的模块一律清掉;不换模板的老账号继续看旧布局,属于预期,不做数据迁移。
rules/templates.ts:删除 applyTemplate 与
TEMPLATE_TYPES。换模板与「恢复默认布局」都用
templateLayout(preset, starter),有承接的人拿常规布局、新用户拿起步布局,这一规则不变。rules/panels.ts:templateNotice(preset)
只写「已换成「X」模板」,不再写「保留了……」。WorkbenchPage.tsx:编辑态换模板、浏览态「换成创业者模板」一次性入口都改成直接用模板布局。WorkbenchToolbar.tsx:模板面板说明由「换模板时,你自己加回的模块会留在末尾」改为「换模板会把首页换成这套模板的默认布局,你加的模块需要时可以从「添加模块」再加回来」。world.home.boardBefore,共用换模板步骤的 AC-211
不给、不核);断言换成创业者模板后只剩常规布局的五张卡,保存请求与刷新后都一样。added
字段保留(前后端契约不动),换模板不再读它,只作存档追溯。分档: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 |
make check-changed
的前端选测里有 4 例失败,分别在
TuantuanAssistant.test.tsx、TuantuanAssistant.recovery-context.test.tsx、ProjectLegacyRoute.test.tsx、ProjectConversationRead.test.tsx。在
origin/develop 85931717
的独立检出上用同一条命令复跑,失败的正是这 4
例(运行目录见上表),与本任务无关,本任务不对它们负责。前端变异只取分批结果、没跑「存活复核」:复核要用全量用例,而全量用例在基准上就有红;这一判断未单独验证,只取分批分数只会偏低、不会偏高。e2e/support/tuantuan-plan-maintenance.ts 有 3
个未使用的导出,基准上已存在,与本任务无关。docs/reports/验收矩阵.md
没有重生成:生成需要两层全量结果。origin/develop
上的矩阵本身已落后于场景(场景版本 8c8e792,矩阵记的是
b35dca9),留给下次全量统一重生成。make check 全量与 make mutation
全量(中档不要求)。WorkbenchToolbar.tsx 旧注释、实施计划决定表的
10-15 取代行,以及本档案的证据路径与基准红名单运行目录。