8.5 KiB
8.5 KiB
清理旧 Portal 导航兼容
Goal
移除已经失效的 Portal 导航双文案兼容和重复报告字段,使公网 smoke、视觉审计与当前产品文案统一以 工作台 为准,同时保留 /portal 路由、内部技术标识、对用户可见英文 Portal 的负向检测以及历史审计材料。
Scope
- 最小推荐范围:更新部署规约中的
工作台 | Portal双接受合同为仅接受工作台。 - 删除只读视觉报告中与
englishFound重复、无现行消费者的navPortalCopy字段。 - 保留
ENGLISH_PRIMARY_TERMS中的Portal,继续把用户可见英文旧词视为视觉 finding。 - 现行用户/运维手册中的
Portal术语不在本批迁移范围。
What I Already Know
- 当前前端导航、后端 workspace 默认导航和所有现行 mock fixture 都使用
工作台。 client/tests/e2e/helpers/smokeAssertions.ts自 2026-05-29 起只接受精确中文工作台,没有运行时代码仍执行双文案兼容。.trellis/spec/hyb-oa/deployment-trialrun.md仍声称旧 mock 可输出Portal,并给出.or(...Portal)示例;该规约已与实际 helper 漂移。- 当前 mock/fixture 中未发现
label: "Portal"或等价单引号写法。 client/tests/e2e/oafront3-pc-readonly-visual.spec.ts把Portal纳入禁止英文主展示词,这是应保留的负向检测。- 同一视觉报告另行输出
navPortalCopy: text.includes("Portal"),但englishFound已包含相同信号;现行代码没有消费者。 - 归档视觉报告包含旧
navPortalCopy字段,属于历史证据,不改写。 /portal路由、assertPortalLoaded、PortalHomePage、Portal API/数据库标识和测试标题是仍在使用的内部技术标识,不等同于用户可见旧导航兼容。- 多份当前手册和业务规约仍用
Portal指代工作台;一次性迁移会显著扩大审阅范围。
Confirmed Scope
- 用户于 2026-07-16 选择方案 1,采用最小兼容清理,不把文档术语迁移和内部符号重命名混入同一批。
- 移除重复报告字段不会影响历史报告读取,因为未发现现行聚合器或门禁消费该字段。
- 本任务不改变路由、导航结构、页面视觉、角色权限或部署行为。
Open Questions
- 无。
Requirements
- 规约必须准确反映现行 smoke helper:导航仅接受
工作台。 - 删除重复的
navPortalCopy新报告字段,但保留Portal英文负向检测。 - 保留
/portal路由和所有仍有消费者的内部 Portal 技术标识。 - 不改写历史 Issue、归档 task 或归档视觉报告。
- 验证 TypeScript、Playwright spec 加载、前端构建和 Trellis 治理。
- 验证产生的
client/dist/、Playwright report 和 test-results 在取证后清理。
Acceptance Criteria
- 部署规约不再声明或示范
工作台 | Portal导航双接受。 smokeAssertions.ts继续精确断言工作台,不新增其他旧词 fallback。- 新生成的只读视觉报告不再包含重复字段
navPortalCopy。 ENGLISH_PRIMARY_TERMS仍包含Portal,用户可见旧英文文案仍产生 finding。- 当前 mock/fixture 不含
Portal导航 label。 /portal路由与内部 Portal 标识保持不变。- TypeScript、Playwright spec
--list、前端 build、task/governance/diff 门禁通过。 - 最终工作树不包含验证生成物,修改范围与用户选择一致。
Feasible Approaches
方案 1:最小兼容清理(推荐)
- 更新部署规约为中文单一合同。
- 删除重复
navPortalCopy报告字段。 - 保留负向英文检测、内部标识和所有现行/历史文档原状。
- 优点:两处小改、风险最低,直接解决实际兼容漂移。
- 缺点:部分现行手册仍使用
Portal作为工作台术语。
方案 2:兼容清理 + 现行手册术语迁移
- 在方案 1 基础上,把 CURRENT 用户/运维文档中面向人的
Portal改为工作台。 - 优点:用户和运维文案更一致。
- 缺点:涉及多份事实源,需要逐条判断历史描述、路由名与当前体验,回归面明显扩大。
方案 3:连内部 Portal 标识一起重命名
- 同时重命名路由、组件、API、测试标题或数据库技术标识。
- 不推荐:没有用户价值,会制造跨前后端、数据与历史兼容风险。
Definition of Done
- 用户选择的范围完成并记录,未顺带重命名内部技术标识。
- 兼容删除有静态引用、历史、报告消费者和回滚证据。
- 前端与治理门禁通过,生成物清理完成。
- 形成中文本地提交计划并另行取得提交确认;不自动 push 或部署。
Technical Approach
- 区分用户可见旧词、负向检测、内部标识、现行手册与历史证据。
- 以现行 helper 和导航源为事实,删除规约中的虚假双接受描述。
- 删除只读视觉报告中的重复字段,保留
englishFound的Portal负向信号。 - 运行静态引用、TypeScript、Playwright 加载、build 和治理门禁。
详细引用矩阵、验证边界与回滚见 design.md 和 research/portal-compat-audit.md。
Decision (ADR-lite)
Context:运行时已经中文单一化,但部署规约仍保留旧 fallback,视觉报告又重复输出相同旧词信号;同时内部 /portal 技术标识和历史证据仍有合法用途。
Decision:用户已选择方案 1;只删失效兼容和重复报告字段,不做大范围术语或内部符号迁移。
Consequences:当前导航合同与代码重新一致,未来报告更精简;现行手册术语一致性留待独立文档治理批次。
Test Plan
cd client && npm run typecheck
cd client && npx playwright test tests/e2e/oafront3-pc-readonly-visual.spec.ts --list
cd client && npx playwright test tests/e2e/visual-shell.spec.ts --list
cd client && npm run build
python3 ./.trellis/scripts/task.py validate 07-16-legacy-portal-navigation-compat-cleanup
node scripts/qa/check-trellis-governance.mjs
git diff --check
- 不运行带凭据公网视觉审计或 live smoke;若需要真实公网复核,必须另行批准并提供前置条件。
- 不执行部署、生产配置修改、数据库写入或企业微信写入。
Verification Results
smokeAssertions.ts仍有两处精确工作台导航断言;当前前后端及 fixture 搜索未发现Portal导航 label。- 活跃测试、规约、脚本和部署范围中
navPortalCopy引用为 0;受保护归档报告仍保留旧字段。 ENGLISH_PRIMARY_TERMS继续包含Portal,englishFound仍是用户可见英文旧词的单一 finding 信号。cd client && npm run typecheck退出码为 0。- 两个相关 Playwright spec 使用
--list成功加载,共列出 2 个文件、6 个测试;未启动浏览器或访问公网。 cd client && npm run build退出码为 0:Vite 转换 2381 个模块,PWA 生成 102 个预缓存条目;仅有既有 Browserslist 数据陈旧提示。- task validate、Trellis governance 和
git diff --check严格模式通过;治理无 warning/error。 client/dist、client/playwright-report和client/test-results已清理。- 独立只读复核无阻断:确认精确中文导航合同、
englishFound检测能力、内部标识与历史证据边界均保持完整,工作树未超出方案 1。 - 未执行 live smoke、带凭据视觉审计、部署、push 或任何数据写入。
Out of Scope
- 未经选择的现行手册术语批量迁移。
/portal路由、Portal API、数据库字段、组件名和内部 helper 名重命名。- 改写历史 Issue CSV、归档 task、归档视觉报告或旧截图。
- 页面布局、视觉、交互、权限、导航分组或业务能力调整。
- push、部署、公网检查或真实数据写入。
Technical Notes
- 当前中文导航源:
client/src/components/navigation/NavLinks.tsx、client/src/features/navigation/schema.ts、server/src/services/workspaceSettings.js。 - 当前 smoke helper:
client/tests/e2e/helpers/smokeAssertions.ts。 - 待清理规约:
.trellis/spec/hyb-oa/deployment-trialrun.md。 - 待精简报告:
client/tests/e2e/oafront3-pc-readonly-visual.spec.ts。 - 上一批候选:
.trellis/tasks/archive/2026-07/07-15-production-trust-closeout-cleanup/research/cleanup-candidate-inventory.md。
Research References
research/portal-compat-audit.md:导航源、fixture、规约、视觉报告、历史证据和内部标识分类结果。