文件
hyb-oa/.trellis/tasks/05-30-nav-reimbursement-approval-surface/prd.md
T

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

  1. PC 主菜单直接显示常用业务台账。

    • 合同、采购、资产、项目在服务端导航和客户端 fallback 中进入主菜单排序。
    • 仍按权限、feature flag、模块启用状态过滤;不因为主菜单开放而绕过服务端权限。
    • 更多 继续承载低频、冻结、阶段性或偶尔查看入口。
  2. 报销列表移除审批执行动作。

    • 移除或隐藏报销列表的 批量操作、批量通过、批量驳回 执行入口。
    • 报销列表保留查看详情、查看处理、查看进度、继续编辑、补材料等状态驱动入口。
    • 不在本任务新增 待我处理 批量审批能力;未来如需要,另开 task。
  3. 测试与文案同步。

    • 更新导航相关单元/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.js
  • cd server && npm test -- workspaceSettings.navigation.test.js
  • cd client && npm run typecheck
  • cd 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-surface
  • node scripts/qa/check-trellis-governance.mjs
  • git diff --check

Out Of Scope

  • 不实现 待我处理 的批量审批能力。
  • 不调整移动请假额度、移动财务卡、移动搜索文案和移动 待我处理 文案;这些进入第二个 task。
  • 不调整生产部署、不做公网检查、不写真实企业微信或生产数据。
  • 不改变服务端权限模型、审批状态机或报销审批 API 能力。

Implementation Plan

  1. 调整导航模型。

    • 服务端:更新默认模块可见性、backup 模块集合和主菜单排序,让合同、采购、资产、项目按权限和 feature flag 进入主菜单。
    • 前端 fallback:同步 MAIN_NAV_ORDER / BACKUP_NAV_ORDER,避免导航接口异常时回退到旧入口结构。
  2. 收口报销列表审批动作。

    • 删除或关闭报销列表批量审批入口和确认弹窗展示。
    • 保留必要的查看、进度和编辑入口;如存在未使用批量逻辑,优先清理掉页面局部状态和 mutation。
  3. 更新测试。

    • 更新 workspaceSettings.navigation.test.js 对默认主菜单和角色主菜单的期望。
    • 更新报销相关 E2E,断言列表不出现批量审批执行按钮,保留业务列表能力。
  4. 验证。

    • cd server && npm test -- workspaceSettings.navigation.test.js 或项目可用的聚焦单元测试命令。
    • cd client && npm run typecheck
    • cd client && npm run build
    • 相关 Playwright 聚焦测试。
    • python3 ./.trellis/scripts/task.py validate 05-30-nav-reimbursement-approval-surface
    • node scripts/qa/check-trellis-governance.mjs
    • git diff --check

Notes

  • 本任务遵循 frontend-design 对前端体验的裁决:这是小团队中文 OA 的任务型工作台,不做全模块目录,也不把高风险执行动作铺在普通列表首屏。
  • 页面视觉细节以现有共享组件和当前设计系统为准,不在本任务引入新的视觉体系。