3.8 KiB
3.8 KiB
设计说明
1. 目标与约束
本任务只处理不改变业务 URL、API、数据库、权限模型和状态机的交互一致性。允许修改共享前端工具与组件,但不得引入新的页面体系或全站视觉重做。
2. 错误消息收敛
client/src/lib/resolveErrorMessage.ts成为普通用户错误消息的默认入口:API error 只返回mapApiErrorMessage(...)的自然中文,不拼 code。- 页面内重复的
isApiError + mapApiErrorMessagehelper 逐步改为共享入口;本任务覆盖当前搜索到的 58 个文件。 - 管理、审计、排障页确需 code 时使用显式技术明细函数或独立明细区,不把 code 混进普通 toast/红条文本。
- 增加源码合同测试或 QA 搜索,阻止普通消息重新出现
error.code + ':'模式。 - 失败反馈位置按可恢复性决定:字段/材料问题就近、区域加载失败驻留在区域并可重试、短暂成功 toast;本轮不全量迁移所有历史 toast。
3. 状态与命名
StatusBadge未知状态统一显示“未知状态”;业务域需要更具体文案时显式传label或使用域映射,不扩充一个无边界的全局状态表。- 员工在职阶段使用独立中文映射,避免
employmentStatus原样透出。 TodosPage状态筛选和徽章使用自然中文。- 审批任务、个人事项、聚合面板分别使用“待我审批 / 我的事项 / 今日待处理”;内部路由和 API 字段保持不变。
4. 首页与首次欢迎
- PC 页面顺序调整为
SummaryStrip → TodayActionPanel → QuickEntryPanel → secondary。 PortalHomePage已拥有权限、角色能力和 quick entries;WelcomeDialog 从调用方接收经过权限过滤的入口,避免在弹窗内复制完整权限模型。- 移动首页移除常驻考勤说明卡;财务第三指标改为真实数据或删除该 tile,不用静态
OA填充。 - 无真实数据的区域不渲染,保留必要空态和真实下一步。
5. 审批动作解释
- 退回说明“返回可修改环节/发起人补充后可继续”,驳回说明“本次流程终止或按规则重新发起”;最终措辞必须对应现有服务端 action 语义,不改变 action。
- 转审理由输入区显示“至少 10 个字”和实时未满足原因;禁用按钮不能成为唯一反馈。
- 费用控制按超标事实、是否阻止通过和下一步表达,不显示
controlMode字段式文案。
6. 共享移动底部动作
- 从
BusinessEditTemplate、移动报销、移动审批和付款响应式页面提取最小共享容器,统一 fixed surface、安全区、内容底部留白和主次动作布局。 - 共享组件只接收动作内容、是否显示和测试 ID,不承载报销/审批/付款状态机。
- 先迁移至少移动报销与移动审批;付款页仅在无业务风险且结构相同时迁移,否则保留并记录后续项。
7. 差旅冻结模块缺陷
- 删除
TravelRequestsPage在无创建权限时自动选择第一条记录的 effect。 - 未带
id时保持列表/空详情;显式选择后的既有?id=详情不变。 - 不改变导航、API、创建能力、状态机或恢复差旅主线。
8. 可访问性与兼容
- 本任务触及的输入具有关联 label、键盘可达和焦点可见性;错误出现在关联字段/区域附近。
- 聚焦页面可增加 axe 或等价语义断言,但不把全站历史债务作为本轮阻断。
- 错误文案变化不改变 API code 本身;日志、服务端响应和审计数据保持原样。
9. 回滚
- 错误消息工具、移动动作容器和页面文案分批提交,任一共享改动可连同消费者同批回滚。
- 差旅只删除一个 effect,回滚不会修改数据;若回滚则恢复旧自动选择行为。
- 无 schema、API 或生产数据回滚步骤。