8.5 KiB
8.5 KiB
产品交互与页面操作一致性治理
Goal
以小团队中文工作台为目标,把用户跨页面反复使用的“进入详情、新建、返回、审批、错误恢复和移动主动作”收敛为可预测的操作模型,减少同一动作在不同模块中位置、文案、反馈和导航行为不一致造成的学习与误操作成本。
Background
- 当前产品事实源已固定六类页面模板、台账首屏纯列表、详情证据结构、状态矩阵动作语义和移动端底部主动作等边界。
- 当前实现仍并存
ListWorkspace、BusinessListTemplate、PageHeader等页面骨架,并存在独立路由、查询参数主从、列表内联编辑和 Dialog 等多种相互竞争的操作方式。 - 2026-08-05 的产品/人机交互审查提出三类工作:先治理低风险、跨页复用的操作规则;再迁移已有详情态的同构台账;合同详情作为新增能力独立规划。
- 当前仍有 58 个前端文件在普通用户路径拼接
CODE: 中文消息,共享resolveErrorMessage也保留该前缀;低风险子任务必须统一收敛。 - 历史已确认付款批次保持列表内显式选择后的详情形态,不新增独立详情路由;本任务不得推翻该业务决定。
Scope
- 父任务管理三个产品交付子任务及必要的质量支撑子任务,维护边界、顺序、验收和最终集成复核;质量支撑任务不扩张产品范围。
- 低风险子任务负责跨页面文案、错误反馈、状态兜底、首页优先级、移动动作容器和差旅自动选中缺陷。
- 采购/资产子任务负责两个已有详情态台账的独立路由迁移与旧链接兼容。
- 合同子任务负责从零合同详情工作区、
terminated状态和事务审计设计/实施。 08-07-interaction-pattern-browser-regression已补齐本地 Chromium/UA 模拟证据;08-07-e2e-fixture-repair负责关闭补跑时暴露的 committed 测试红灯,二者均为质量支撑子任务。- 付款批次、请假和完整差旅不做详情路由化;非涉密合同附件能力按后续规约任务处理。
Requirements
- R1:本父任务作为需求源和跨子任务验收入口,不直接承接大批量业务页面实现。
- R2:子任务
08-05-interaction-pattern-unification处理不改变业务 URL、数据库、API、权限模型和状态机的低风险一致性问题。 - R3:子任务
08-05-business-detail-routing只处理采购、资产两个已有详情态台账的列表/详情路由边界、深链、返回和未保存保护。 - R4:子任务
08-05-contract-detail-workspace独立定义合同详情的信息结构、权限与高风险动作归位,不与采购/资产的路由搬迁混做。 - R5:视觉与交互分析优先遵循项目指定的
frontend-design;本会话该 skill 不可用时,只以ui-ux-pro-max、现有共享组件和产品事实源做保守补充,不创建新的视觉体系。 - R6:不得借一致性治理扩张业务模块、重做既有状态机、改变企业微信/OA 边界、放宽权限或触碰真实数据。
- R7:完整差旅属于冻结模块,不做详情路由化;仅在低风险子任务中删除自动选择第一条记录的缺陷,不恢复或扩展差旅能力。
- R8:三个产品交付子任务独立实施与批准;低风险统一先行,浏览器证据和 E2E fixture 红灯清零后再做采购/资产路由化,合同详情在其独立规划获批后最后实施。
- R9:每个子任务独立完成本地验证、可访问性/交互回归和 Trellis 门禁;只有部署与公网关键路径检查通过后,才能告知用户线上可测。
- R10:浏览器补跑与 E2E fixture 修复只维护验证可信度和 committed 测试绿色,不新增页面、权限、API、状态机或数据库能力。
Acceptance Criteria
- 三个产品交付子任务均具有独立、可观察且不互相重复的验收标准,质量支撑子任务不扩张产品范围。
- 低风险统一先于详情路由化完成,路由化复用已经收敛的文案、反馈和动作组件。
- 浏览器补跑与 committed E2E fixture 修复在采购/资产路由化开工前完成,没有把当时已知的 R6/R111 红灯带入后续子任务。
- 当时范围内的问题已按完整搜索口径治理;错误码前缀未因错误的窄模式搜索被误判为已修复。
- 付款批次继续使用现有显式选择详情形态,没有新增独立详情路由。
- 完整差旅继续冻结;只删除首屏自动选中第一条记录的缺陷。
- 合同详情的信息结构和高风险动作边界在独立子任务中裁决,没有作为采购/资产迁移的附带工作。
- 除合同子任务独立批准的详情 API、
terminated状态和增量 schema 外,没有扩张其他 API、数据库、权限模型、审批/付款状态机、生产配置或真实业务数据。 - 各子任务要求的 typecheck/build、聚焦测试与治理门禁均完成;另有 8 条会话回落失败仍未定性、未宣称通过,并在父任务遗留清单中单独登记。
- 每个子任务完成后均有独立提交和回滚点,父任务已完成跨子任务集成复核。
Out of Scope
- 模块冻结清单、一级导航产品组合和功能下线。
- 全站视觉换肤、品牌重做、暗色模式或新设计系统。
- 除合同子任务明确批准的详情 API、
terminated状态与增量 schema 外,不修改其他后端业务规则、权限、状态机、数据库 schema 或生产数据。 - 付款批次独立详情路由。
- 公网部署、生产配置或真实数据写入;如后续需要,必须另行获批。
Test Plan
- 每个子任务先运行自身聚焦测试、typecheck/build 和任务 validate,再运行父任务集成门禁。
- 父任务最终运行
node scripts/qa/check-process-contract.mjs --baseline --json、node scripts/qa/audit-docs.mjs --check-registry、node scripts/qa/check-trellis-governance.mjs和git diff --check。 - 路由子任务覆盖采购/资产深链、旧
?id=兼容、返回与未保存保护;合同子任务额外覆盖 Prisma 校验、迁移状态、状态不变量、事务审计失败回滚和只读 reviewer。 - E2E fixture 修复直接运行 R6 七视口 spec 与 R111 双端 spec,不使用临时副本冒充 committed suite 通过。
Open Questions
- 无;三个产品交付子任务的边界和合同终止持久化方案均已确认。未完成事项按下方遗留清单管理,不视为本父任务的开放范围问题。
Integration Closeout(2026-08-08)
- 父任务登记的 6 个子任务均已完成并归档;本地数据库迁移基线由独立前置任务
08-07-local-database-migration-readiness恢复并校验,不计入产品交付范围。 - 集成复核确认:低风险交互模式已收敛;采购/资产详情路由和资产创建后跳转已关闭回归;合同详情、
terminated三字段、专用终止接口和 required audit 已通过只读 reviewer。 - 差旅没有恢复冻结能力,付款/请假没有被路由化,非涉密合同附件没有提前实现。
- 生产部署、公网检查和企业微信真机仍为
PAUSED;父任务归档不代表线上可测。
Residual Register
- OPEN · 8 条会话回落失败,未定性且无执行 task
client/tests/e2e/r103-cross-page-ui-consistency.spec.ts仍有 7 条、client/tests/e2e/global-search.spec.ts仍有 1 条失败,统一症状为多上下文或二次返回后落到登录页。- 当前证据只能证明数据库基线恢复且
/api/me已返回 200,不能证明根因一定是测试夹具,也不能排除真实会话续期行为。 - 本父任务不修改这些用例或登录实现。后续处理前必须另建 Trellis task,先在同一 runner 下稳定复现并定性“fixture/session mock”或“真实会话行为”;不得以删除断言作为默认修法。父任务归档不代表这 8 条通过。
- DEFERRED · 同步导航放行语义注释
runWithNextNavigationAllowed依赖同步执行导航,并用queueMicrotask恢复 guard;未来维护应补注释说明该边界,避免误改成扩大放行窗口的setTimeout。当前失败方向仍是安全地重新触发 guard,不构成功能缺陷。
- DEFERRED · R6 fixture 的
hr角色用途注释r6-mobile-responsive-system-hotfix.spec.ts中的hr角色仅用于通过真实角色解析链获得leave.manage,因为当前没有更窄的非通配角色。后续维护应补注释,避免把该 fixture 误解为业务上的完整 HR 管理员画像;当前 committed spec 已通过。