6.4 KiB
6.4 KiB
导航与报销审批入口收口
Goal
把已确认的 PC 核心入口规则落到代码:合同、采购、资产、项目等常用业务在有权限且模块启用时直接出现在主菜单;报销列表不再直接执行批量通过/批量驳回,审批动作统一回到 待我处理 / 审批详情。
Background
- 目标用户是国内、小于 10 人的科技初创公司,角色重叠、审批链短,入口应少绕路。
- 用户已确认:合同、采购、资产、项目不默认藏到
更多,有权限且启用时直接显示。 - 用户已确认:报销列表里的批量通过/批量驳回应迁移到
待我处理,报销列表只做查看、筛选、进度和补材料入口。 - 用户已确认:后续选择项使用
1 / 2 / 3,不再用A / B / C。 - 移动端细节单独进入后续 task,本任务只做 PC 导航与 PC 报销审批入口收口。
Scope
本任务只覆盖 PC 主菜单和 PC 报销列表审批入口收口:
- 服务端系统导航、默认工作区可见性、试运行/开发种子里的常用业务入口位置。
- 前端导航 fallback 顺序和本地权限 fallback 口径。
- PC 报销列表里的批量审批入口、局部状态、确认弹窗和对应前端断言。
- 导航单元测试、登录/工作台视觉测试、报销列表视觉测试。
明确不覆盖:
- 移动请假额度、移动财务卡、移动搜索文案、移动待办文案。
待我处理新增批量审批能力。- 服务端审批 API、权限模型、审批状态机、数据库迁移和生产部署。
Current Observations
server/src/services/workspaceSettings.js的默认导航仍把assets、purchaseRequests、contractsRegistry放入 backup/admin 口径,resolveNavigationSection对BACKUP_NAVIGATION_MODULES强制进入 backup。client/src/features/navigation/schema.ts的 fallback 顺序仍把assets、purchase-requests、contracts-registry放在BACKUP_NAV_ORDER。client/src/pages/ReimbursementsPage.tsx仍保留批量操作、批量通过、批量驳回和批量审批确认弹窗。.trellis/spec/hyb-oa/frontend-react-vite-design.md和docs/产品设计规则.md已规定审批动作集中在待我处理/ 审批详情,业务台账只显示查看处理、查看进度、补材料等入口。
Requirements
-
PC 主菜单直接显示常用业务台账。
- 合同、采购、资产、项目在服务端导航和客户端 fallback 中进入主菜单排序。
- 仍按权限、feature flag、模块启用状态过滤;不因为主菜单开放而绕过服务端权限。
更多继续承载低频、冻结、阶段性或偶尔查看入口。
-
报销列表移除审批执行动作。
- 移除或隐藏报销列表的
批量操作、批量通过、批量驳回执行入口。 - 报销列表保留查看详情、查看处理、查看进度、继续编辑、补材料等状态驱动入口。
- 不在本任务新增
待我处理批量审批能力;未来如需要,另开 task。
- 移除或隐藏报销列表的
-
测试与文案同步。
- 更新导航相关单元/E2E 断言。
- 更新报销列表相关 Playwright 断言,确保报销列表不再出现批量审批执行入口。
- 若规范已有明确规则,只补充与本任务相关的稳定实现约束,不重复写视觉规则。
Acceptance Criteria
- 有权限且模块启用的用户在 PC 主菜单可直接看到
资产、采购申请、合同台账、项目。 - 普通员工不显示无权限或未启用模块;审批人仍按规则显示
待我处理。 - 报销列表不显示
批量操作、批量通过、批量驳回。 - 报销列表仍可进入报销详情或相应处理/进度入口。
待我处理作为审批动作执行入口的规则保持一致。- 前端 typecheck/build 通过,导航/报销相关测试通过。
- Trellis governance 和
git diff --check通过。
Test Plan
cd server && node --check src/services/workspaceSettings.js && node --check src/routes/featureFlags.js && node --check src/scripts/seed-dev.js && node --check src/scripts/seed-trialrun.jscd server && npm test -- workspaceSettings.navigation.test.jscd client && npm run typecheckcd client && npm run build- 启动本地 Vite 后运行:
cd client && npx playwright test tests/e2e/visual-shell.spec.ts tests/e2e/login-portal-ux.spec.ts --workers=1 --reporter=list python3 ./.trellis/scripts/task.py validate 05-30-nav-reimbursement-approval-surfacenode scripts/qa/check-trellis-governance.mjsgit diff --check
Out Of Scope
- 不实现
待我处理的批量审批能力。 - 不调整移动请假额度、移动财务卡、移动搜索文案和移动
待我处理文案;这些进入第二个 task。 - 不调整生产部署、不做公网检查、不写真实企业微信或生产数据。
- 不改变服务端权限模型、审批状态机或报销审批 API 能力。
Implementation Plan
-
调整导航模型。
- 服务端:更新默认模块可见性、backup 模块集合和主菜单排序,让合同、采购、资产、项目按权限和 feature flag 进入主菜单。
- 前端 fallback:同步
MAIN_NAV_ORDER/BACKUP_NAV_ORDER,避免导航接口异常时回退到旧入口结构。
-
收口报销列表审批动作。
- 删除或关闭报销列表批量审批入口和确认弹窗展示。
- 保留必要的查看、进度和编辑入口;如存在未使用批量逻辑,优先清理掉页面局部状态和 mutation。
-
更新测试。
- 更新
workspaceSettings.navigation.test.js对默认主菜单和角色主菜单的期望。 - 更新报销相关 E2E,断言列表不出现批量审批执行按钮,保留业务列表能力。
- 更新
-
验证。
cd server && npm test -- workspaceSettings.navigation.test.js或项目可用的聚焦单元测试命令。cd client && npm run typecheckcd client && npm run build- 相关 Playwright 聚焦测试。
python3 ./.trellis/scripts/task.py validate 05-30-nav-reimbursement-approval-surfacenode scripts/qa/check-trellis-governance.mjsgit diff --check
Notes
- 本任务遵循
frontend-design对前端体验的裁决:这是小团队中文 OA 的任务型工作台,不做全模块目录,也不把高风险执行动作铺在普通列表首屏。 - 页面视觉细节以现有共享组件和当前设计系统为准,不在本任务引入新的视觉体系。