文件
hyb-oa/.trellis/tasks/archive/2026-05/05-29-role-based-navigation-simplification/design.md
T

97 行
4.0 KiB
Markdown

# 菜单栏角色化降噪重构设计
## Design Direction
采用“安静的任务型工作栏”:一级导航不是模块目录,而是每类用户今天最可能要点击的任务入口。视觉上保持当前 OA 工具气质,降低解释性文案和卡片感,让菜单通过排序、角色显隐和短中文名表达优先级。
## Information Architecture
### 普通员工
- 工作台
- 报销
- 请假记录
- 我的进度
- 更多
### 审批人 / 负责人
- 工作台
- 待我处理
- 报销
- 项目
- 团队
- 更多
### 财务 / 管理员
- 工作台
- 待我处理
- 报销
- 付款
- 应付账款
- 票据
- 管理
- 更多
具体入口仍受权限和 feature flag 限制;上面是目标信息架构,不代表绕过权限展示。
## Proposed Implementation
1. 服务端导航
- 在 `server/src/services/workspaceSettings.js` 中统一用户可见文案:
- `workflowTasks`: `待我处理`
- `leaveRequests`: `请假记录`
- `paymentBatches`: `付款`
- `apOperations`: `应付账款`
- `invoicePool`: `票据`
- `featureFlags`: `功能管理`
- `erpIntegrations`: `外部系统`
- 调整 `DEFAULT_MODULE_VISIBILITY`:普通高频保留,低频配置、预算、集成、审计等默认后置。
- 保证 `workflowTasks` 只对业务审批人、负责人、财务等可处理角色出现。
- 避免普通员工看到财务、票据、管理、个人设置入口。
2. 前端导航分组
- 在 `client/src/components/navigation/NavLinks.tsx` 中让服务端 placement 和角色语义成为主导。
- 移除“按路径重新把 backup 提升到业务/财务”的行为,或改为只在同一后置层内排序。
- `更多` 改为轻量 details/summary 行,无副标题、无大卡片。
- 侧边栏一级分组减少到任务感更强的结构,避免展示过多 section label。
3. 侧边栏壳层
- 在 `client/src/components/navigation/Sidebar.tsx` 移除 `今日优先` 说明卡。
- 若需要轻量状态提示,后续只在有真实待处理数量时显示;本轮优先移除说明卡,不强制新增数据查询。
4. 顶部和账号入口
- `个人设置` 保留在 `Topbar` 账号菜单,不出现在侧边栏。
- 通知保留顶部铃铛,不加入侧边栏。
5. 移动底栏
- 在 `client/src/components/mobile/MobileBottomNav.tsx` 中把审批人文案改为 `待办`,非审批人继续显示 `进度`。
- 不新增移动底栏 `请假`。
6. 工作区设置页
- 在 `client/src/pages/WorkspaceSetupPage.tsx` 中调整文案:从“主导航/管理区/隐藏”的模块视角,转成“常用入口/管理与低频/隐藏”或等价表达。
- 保留现有能力,不在本轮开发复杂的拖拽或角色矩阵配置。
7. 文档和规则
- 更新 `docs/产品设计规则.md`:新增功能默认不进一级侧边栏,必须先判断角色、频次和真实待办价值。
- 更新 `.trellis/spec/hyb-oa/frontend-react-vite-design.md`:固化导航壳层和菜单降噪规则。
## Risk And Mitigation
- 风险:前端重分组和服务端 placement 互相打架,导致后置模块又被抬到一级。
- 缓解:把服务端结果作为事实源,前端只排序和轻量归类;增加角色导航单测。
- 风险:文案变更影响既有测试断言。
- 缓解:同步更新导航、smoke 和截图断言。
- 风险:管理合并入口没有完整管理首页承接。
- 缓解:本轮可先指向现有工作区设置或现有管理承接页;不做管理页大改。
- 风险:普通员工入口过少导致找不到低频功能。
- 缓解:保留 `更多` 和全局搜索;低频能力隐藏/后置,不删除。
## Verification Plan
- 服务端角色导航单测覆盖 employee、manager、finance、admin、owner。
- 前端 typecheck/build。
- 截图检查 PC 1440 宽侧边栏和移动 390 宽底栏。
- 文档 diff 检查新规则是否只沉淀产品事实和工程约束,不加入视觉细节到 `docs/产品设计规则.md`。