From 3efa540d666202f95b2fd0dada6bf419a39ebb32 Mon Sep 17 00:00:00 2001 From: shunli Date: Sat, 8 Aug 2026 02:47:52 +0800 Subject: [PATCH] =?UTF-8?q?docs(08-05-product-interaction-consistency):=20?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E7=88=B6=E4=BB=BB=E5=8A=A1=E9=9B=86=E6=88=90?= =?UTF-8?q?=E6=94=B6=E5=8F=A3=E4=B8=8E=E9=81=97=E7=95=99=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design.md | 6 ++- .../implement.md | 37 +++++++++------- .../prd.md | 42 +++++++++++++------ .../task.json | 9 +++- 4 files changed, 64 insertions(+), 30 deletions(-) diff --git a/.trellis/tasks/08-05-product-interaction-consistency/design.md b/.trellis/tasks/08-05-product-interaction-consistency/design.md index 3cf67913..81ee047d 100644 --- a/.trellis/tasks/08-05-product-interaction-consistency/design.md +++ b/.trellis/tasks/08-05-product-interaction-consistency/design.md @@ -10,14 +10,18 @@ | `08-07-interaction-pattern-browser-regression` | 补齐低风险统一的本地 Chromium 与企业微信 UA 模拟证据 | 证据边界、历史 spec 漂移 | | `08-07-e2e-fixture-repair` | 修复 R6/R111 committed E2E fixture 与断言,勘误历史诊断 | 测试口径被误删、fixture 权限漂移 | | `08-05-business-detail-routing` | 采购、资产已有详情态迁到独立路由 | URL 兼容、返回、dirty guard | +| `08-07-business-routing-regression-repair` | 关闭资产创建后被 dirty guard 拦截及采购断言漂移 | 保存成功导航、共享 guard 放行边界 | | `08-05-contract-detail-workspace` | 新建合同详情、终止状态、迁移和事务审计 | 状态机、权限、迁移、审计 | +`08-07-local-database-migration-readiness` 是合同开工前独立执行的本地基线恢复任务,不属于父任务产品子任务,但其迁移状态与真实回归结果作为集成证据保留。 + ## 2. 执行顺序 1. 先实施低风险统一,形成后续页面可复用的错误消息、状态兜底和移动动作模式。 2. 补齐低风险统一的浏览器证据,并修复补跑暴露的 committed E2E fixture/断言红灯。 3. 再迁移采购/资产路由;该子任务只消费共享模式,不修改合同、差旅、付款或请假。 -4. 合同详情作为独立能力最后实施,必须单独批准其 schema、状态机与迁移计划。 +4. 本地数据库基线恢复后,独立关闭真实回归暴露的资产创建跳转与采购断言漂移,不把该修复混入合同任务。 +5. 合同详情作为独立能力最后实施,必须单独批准其 schema、状态机与迁移计划。 父子关系不隐含自动授权。每个子任务都要独立执行 `task.py start`、验证、提交与归档。 diff --git a/.trellis/tasks/08-05-product-interaction-consistency/implement.md b/.trellis/tasks/08-05-product-interaction-consistency/implement.md index 9e4f4217..d162a16f 100644 --- a/.trellis/tasks/08-05-product-interaction-consistency/implement.md +++ b/.trellis/tasks/08-05-product-interaction-consistency/implement.md @@ -2,40 +2,47 @@ ## 1. 父任务职责 -- [ ] 审核三个产品交付子任务及质量支撑子任务的 PRD、design 和 implement,确认范围无重叠。 -- [ ] 按“低风险统一 → 浏览器补跑 → E2E fixture 修复 → 采购/资产路由化 → 合同详情”顺序分别请求实施批准。 -- [ ] 不启动父任务作为业务代码实现目标;启动拥有下一交付物的子任务。 +- [x] 审核三个产品交付子任务及质量支撑子任务的 PRD、design 和 implement,确认范围无重叠。 +- [x] 按“低风险统一 → 浏览器补跑 → E2E fixture 修复 → 采购/资产路由化 → 合同详情”顺序分别请求实施批准。 +- [x] 没有把父任务作为业务代码实现目标;实际实现均落在拥有对应交付物的子任务。 ## 2. 子任务交付顺序 ### 2.1 低风险操作规范统一 -- [ ] 完成共享错误、状态、命名、首页、审批反馈、移动动作和差旅自动选择修复。 -- [ ] 通过其聚焦测试与完整前端构建,独立提交和归档。 +- [x] 完成共享错误、状态、命名、首页、审批反馈、移动动作和差旅自动选择修复。 +- [x] 通过其聚焦测试与完整前端构建,独立提交和归档。 ### 2.2 采购与资产详情独立路由化 进入本节前,必须完成 `08-07-interaction-pattern-browser-regression` 与 `08-07-e2e-fixture-repair`,确认 committed 交互回归 spec 无已知红灯。 -- [ ] 在低风险任务完成后迁移采购/资产详情路由与旧链兼容。 -- [ ] 验证所有仓库内入口、dirty guard 和浏览器返回,独立提交和归档。 +- [x] 在低风险任务完成后迁移采购/资产详情路由与旧链兼容。 +- [x] 验证所有仓库内入口、dirty guard 和浏览器返回,独立提交和归档;资产创建跳转回归由独立收尾任务关闭。 ### 2.3 合同详情页与高风险动作归位 -- [ ] 单独实施详情 API/UI、`terminated`、迁移、事务审计和历史展示。 -- [ ] 完成状态机/权限/迁移只读 review;reviewer 不改代码。 -- [ ] 本地验证后独立提交;生产迁移与部署继续等待明确授权。 +- [x] 单独实施详情 API/UI、`terminated`、迁移、事务审计和历史展示。 +- [x] 完成状态机/权限/迁移只读 review;reviewer 不改代码,最终结论 `PASS`。 +- [x] 本地验证后独立提交并归档;生产迁移与部署继续等待明确授权。 ## 3. 父任务最终集成门禁 -- [ ] 三个产品交付子任务和质量支撑任务的验收结果与父 PRD 逐项对账。 -- [ ] 确认普通用户错误无技术前缀,采购/资产新链接稳定,合同状态/证据边界未漂移。 -- [ ] 确认差旅未恢复、付款/请假未路由化、非涉密合同附件未提前实现。 -- [ ] 运行父任务 validate、process contract、docs registry、Trellis governance 和 `git diff --check`。 -- [ ] 需要部署时另建或更新部署 task,获得明确授权后执行公网验证。 +- [x] 三个产品交付子任务和质量支撑任务的验收结果与父 PRD 逐项对账。 +- [x] 确认普通用户错误无技术前缀,采购/资产新链接稳定,合同状态/证据边界未漂移。 +- [x] 确认差旅未恢复、付款/请假未路由化、非涉密合同附件未提前实现。 +- [x] 运行父任务 validate、process contract、docs registry、Trellis governance 和 `git diff --check`。 +- [x] 部署仍需另建或更新部署 task,并在获得明确授权后执行公网验证;本轮未部署。 ## 4. 回滚点 - 每个子任务提交即一个独立回滚点。 - 父任务不合并 schema 回滚、URL 回滚和共享组件回滚为一个不可分割提交。 - 合同迁移的破坏性 drop 不随应用回滚自动执行,按合同子任务设计单独判断。 + +## 5. 集成收口证据 + +- 6 个登记子任务均已归档;本地迁移基线恢复任务作为独立前置证据保留。 +- 8 条会话回落失败仍未定性,已在父 PRD `Residual Register` 登记,未修改或删除相关断言,也未宣称套件全绿。 +- `runWithNextNavigationAllowed` 同步语义注释和 R6 `hr` fixture 用途注释登记为后续最小维护项,不在父任务收口中顺手修改业务代码或测试。 +- 生产、公网、企业微信真机仍为 `PAUSED`。 diff --git a/.trellis/tasks/08-05-product-interaction-consistency/prd.md b/.trellis/tasks/08-05-product-interaction-consistency/prd.md index 7d90c6e4..b0a63a51 100644 --- a/.trellis/tasks/08-05-product-interaction-consistency/prd.md +++ b/.trellis/tasks/08-05-product-interaction-consistency/prd.md @@ -36,22 +36,22 @@ ## Acceptance Criteria -- [ ] 三个子任务均具有独立、可观察且不互相重复的验收标准。 -- [ ] 低风险统一先于详情路由化完成,路由化复用已经收敛的文案、反馈和动作组件。 -- [ ] 浏览器补跑与 committed E2E fixture 修复在采购/资产路由化开工前完成,不把已知红灯带入后续子任务。 -- [ ] 当前仍存在的问题被纳入范围;错误码前缀按覆盖变量名的完整搜索结果治理,不因错误的窄模式搜索被误判为已修复。 -- [ ] 付款批次继续使用现有显式选择详情形态,不新增独立详情路由。 -- [ ] 完整差旅继续冻结;只删除首屏自动选中第一条记录的缺陷。 -- [ ] 合同详情的信息结构和高风险动作边界在独立子任务中裁决,不作为采购/资产迁移的附带工作。 -- [ ] 不改变 API、数据库、权限模型、审批/付款状态机、生产配置或真实业务数据。 -- [ ] 前端 typecheck/build、聚焦 Playwright、Trellis governance、process contract、文档注册表和 `git diff --check` 均通过。 -- [ ] 每个子任务完成后有独立提交和回滚点,最终由父任务做跨子任务集成复核。 +- [x] 三个产品交付子任务均具有独立、可观察且不互相重复的验收标准,质量支撑子任务不扩张产品范围。 +- [x] 低风险统一先于详情路由化完成,路由化复用已经收敛的文案、反馈和动作组件。 +- [x] 浏览器补跑与 committed E2E fixture 修复在采购/资产路由化开工前完成,没有把当时已知的 R6/R111 红灯带入后续子任务。 +- [x] 当时范围内的问题已按完整搜索口径治理;错误码前缀未因错误的窄模式搜索被误判为已修复。 +- [x] 付款批次继续使用现有显式选择详情形态,没有新增独立详情路由。 +- [x] 完整差旅继续冻结;只删除首屏自动选中第一条记录的缺陷。 +- [x] 合同详情的信息结构和高风险动作边界在独立子任务中裁决,没有作为采购/资产迁移的附带工作。 +- [x] 除合同子任务独立批准的详情 API、`terminated` 状态和增量 schema 外,没有扩张其他 API、数据库、权限模型、审批/付款状态机、生产配置或真实业务数据。 +- [x] 各子任务要求的 typecheck/build、聚焦测试与治理门禁均完成;另有 8 条会话回落失败仍未定性、未宣称通过,并在父任务遗留清单中单独登记。 +- [x] 每个子任务完成后均有独立提交和回滚点,父任务已完成跨子任务集成复核。 ## Out of Scope - 模块冻结清单、一级导航产品组合和功能下线。 - 全站视觉换肤、品牌重做、暗色模式或新设计系统。 -- 后端业务规则、权限、状态机、数据库 schema 或生产数据修改。 +- 除合同子任务明确批准的详情 API、`terminated` 状态与增量 schema 外,不修改其他后端业务规则、权限、状态机、数据库 schema 或生产数据。 - 付款批次独立详情路由。 - 公网部署、生产配置或真实数据写入;如后续需要,必须另行获批。 @@ -64,4 +64,22 @@ ## Open Questions -- 无;三个子任务的边界和合同终止持久化方案均已确认。 +- 无;三个产品交付子任务的边界和合同终止持久化方案均已确认。未完成事项按下方遗留清单管理,不视为本父任务的开放范围问题。 + +## Integration Closeout(2026-08-08) + +- 父任务登记的 6 个子任务均已完成并归档;本地数据库迁移基线由独立前置任务 `08-07-local-database-migration-readiness` 恢复并校验,不计入产品交付范围。 +- 集成复核确认:低风险交互模式已收敛;采购/资产详情路由和资产创建后跳转已关闭回归;合同详情、`terminated` 三字段、专用终止接口和 required audit 已通过只读 reviewer。 +- 差旅没有恢复冻结能力,付款/请假没有被路由化,非涉密合同附件没有提前实现。 +- 生产部署、公网检查和企业微信真机仍为 `PAUSED`;父任务归档不代表线上可测。 + +## Residual Register + +1. **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 条通过。 +2. **DEFERRED · 同步导航放行语义注释** + - `runWithNextNavigationAllowed` 依赖同步执行导航,并用 `queueMicrotask` 恢复 guard;未来维护应补注释说明该边界,避免误改成扩大放行窗口的 `setTimeout`。当前失败方向仍是安全地重新触发 guard,不构成功能缺陷。 +3. **DEFERRED · R6 fixture 的 `hr` 角色用途注释** + - `r6-mobile-responsive-system-hotfix.spec.ts` 中的 `hr` 角色仅用于通过真实角色解析链获得 `leave.manage`,因为当前没有更窄的非通配角色。后续维护应补注释,避免把该 fixture 误解为业务上的完整 HR 管理员画像;当前 committed spec 已通过。 diff --git a/.trellis/tasks/08-05-product-interaction-consistency/task.json b/.trellis/tasks/08-05-product-interaction-consistency/task.json index 820f69b7..0eedb51d 100644 --- a/.trellis/tasks/08-05-product-interaction-consistency/task.json +++ b/.trellis/tasks/08-05-product-interaction-consistency/task.json @@ -27,8 +27,13 @@ "08-07-business-routing-regression-repair" ], "parent": null, - "relatedFiles": [], - "notes": "", + "relatedFiles": [ + "client/tests/e2e/r103-cross-page-ui-consistency.spec.ts", + "client/tests/e2e/global-search.spec.ts", + "client/src/components/common/UnsavedChangesGuard.tsx", + "client/tests/e2e/r6-mobile-responsive-system-hotfix.spec.ts" + ], + "notes": "6 个登记子任务均已完成归档;父任务集成复核通过。遗留 8 条会话回落失败仍未定性,后续必须另建 task 先区分 fixture/session mock 与真实会话行为;另登记同步导航放行和 R6 hr fixture 两项注释维护。生产、公网、企业微信真机仍为 PAUSED。", "meta": { "description": "统一小团队 OA 的页面操作模型,按低风险交互、采购资产路由、合同详情三项产品交付独立实施;浏览器回归与 E2E fixture 子任务作为质量支撑,完成后再进入路由和迁移阶段。" }