--- title: '系统故障高优先级修复 - 数据统计与考勤模块' slug: 'system-faults-high-priority-fix' created: '2026-03-06T12:30:00Z' status: 'ready-for-dev' stepsCompleted: [1, 2, 3, 4] adversarialReviewCompleted: true adversarialReviewFindings: 18 adversarialReviewApplied: true tech_stack: ['React', 'TypeScript', 'Taro', 'React Query', 'RPC Client'] files_to_modify: [ 'allin-packages/order-management-ui/src/components/OrderDetailModal.tsx', 'mini-ui-packages/yongren-dashboard-ui/src/pages/Dashboard/Dashboard.tsx', 'mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx', 'mini-ui-packages/yongren-statistics-ui/src/pages/Statistics/Statistics.tsx', 'mini-ui-packages/rencai-attendance-ui/src/pages/AttendancePage/AttendancePage.tsx', 'mini-ui-packages/rencai-attendance-ui/src/utils/mockAttendanceData.ts', 'mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx', 'mini-ui-packages/rencai-employment-ui/src/pages/EmploymentPage/EmploymentPage.tsx' ] code_patterns: ['桥接文件模式', 'React Query hooks', 'RPC 客户端', 'Mock 数据'] test_patterns: ['Vitest', 'React Testing Library'] --- # Tech-Spec: 系统故障高优先级修复 - 数据统计与考勤模块 **Created:** 2026-03-06 ## Overview ### Problem Statement 根据 2026-03-06 系统故障文档,共有 9 个故障问题,涉及网页端、企业端和人才端: #### 高优先级问题(需立即修复): **问题2:企业端-数据统计模块无数据展示** - 在职人数:0 - 平均薪资:¥0 - 在职率:0% - 所有分类分布(残疾类型、性别、年龄、户籍省份)显示"暂无数据" - 📸 原始截图:`docs/系统故障20260306_images/image2.png` **问题6:人才端-本月出勤与考勤数据不一致** - 本月出勤:0 - 累计出勤:0 - 本月薪资:¥0 - 📸 原始截图:`docs/系统故障20260306_images/image6.png` **问题9:人才端-出勤率计算异常** - 正常出勤:30天 - 出勤率:136%(超出100%不合理) - 需求:修改为正常出勤22天,出勤率100% - 📸 原始截图:`docs/系统故障20260306_images/image9.jpeg` #### 中优先级问题: **问题1:网页端-订单管理薪资改为可手动输入修改项** - 📸 原始截图:`docs/系统故障20260306_images/image1.png` **问题3:企业端-订单详情打卡数据需修改为固定内容** - 打卡完成率:100% - 工资视频:100% - 个税视频:100% - 📸 原始截图:`docs/系统故障20260306_images/image3.png` **问题5:人才端-小程序远程打卡提示修改** - 当前提示:"该功能开发中" - 需求:改为"已打卡成功" - 📸 原始截图:`docs/系统故障20260306_images/image5.png` #### 低优先级问题: **问题4:企业端-首页人才库点击无跳转** - 📸 原始截图:`docs/系统故障20260306_images/image4.png` **问题7:人才端-薪资记录显示范围修改** - 需求:显示当前月上一个月的薪资 - 📸 原始截图:`docs/系统故障20260306_images/image7.png` **问题8:企业端-首页去掉最新通知模块** - 需求:修复在职人员数量显示不匹配 - 需求:去掉"最新通知"模块 - 📸 原始截图:`docs/系统故障20260306_images/image8.png` ### Solution 按优先级修复各类问题: **高优先级(数据类):** 1. 修复数据统计模块数据加载逻辑 2. 修复人才端考勤数据获取和显示 3. 修正出勤率计算公式 **中优先级(功能完善):** 4. 订单管理薪资字段支持手动输入 5. 订单详情打卡数据改为固定值 6. 远程打卡提示文案修改 **低优先级(优化类):** 7. 人才库跳转功能修复 8. 薪资记录时间范围调整 9. 首页最新通知模块移除 ### Scope **In Scope:** 全部 9 个故障问题的修复: **高优先级(3个):** - 问题2:企业端-数据统计模块数据加载修复 - 问题6:人才端-本月出勤数据加载修复 - 问题9:人才端-出勤率计算逻辑修复(22天,100%) **中优先级(3个):** - 问题1:网页端-订单管理薪资改为手动输入 - 问题3:企业端-订单详情打卡数据改为固定内容 - 问题5:人才端-小程序远程打卡提示修改 **低优先级(3个):** - 问题4:企业端-首页人才库点击跳转修复 - 问题7:人才端-薪资记录显示范围修改 - 问题8:企业端-首页去掉最新通知模块 **Out of Scope:** - 重构整个数据统计模块架构 - 修改数据库表结构(但允许添加测试数据) - 实现全新的考勤系统 - 与其他模块联调(除非直接影响本修复) **Gray Area(需要判断)**: - 如果问题2根源是数据库无数据:允许添加测试数据进行验证 - 如果需要微调API响应格式:允许调整前端数据处理逻辑 ## Context for Development ### Codebase Patterns **项目架构:** - **小程序框架**:Taro (React + TypeScript) - **UI 包分离**:页面组件从独立 npm 包导入 - **数据获取**:React Query (@tanstack/react-query) + RPC 客户端 - **状态管理**:React hooks (useState, useEffect) **代码模式:** - **桥接文件模式**:小程序页面作为桥接,从 UI 包导入实际组件 ```typescript // mini/src/pages/yongren/statistics/index.tsx import Statistics from '@d8d/yongren-statistics-ui/pages/Statistics/Statistics' export default Statistics ``` - **API 客户端模式**:使用 Hono RPC 客户端调用后端接口 ```typescript export const enterpriseStatisticsClient = rpcClient('/api/v1/yongren/statistics') ``` - **React Query 模式**:使用 useQuery hook 进行数据获取和缓存 ```typescript const { data, isLoading } = useQuery({ queryKey: ['statistics', 'employment-count'], queryFn: async () => { ... } }) ``` ### Files to Reference | 文件 | 用途 | 关键问题 | | ---- | ---- | -------- | | `mini-ui-packages/yongren-statistics-ui/src/pages/Statistics/Statistics.tsx` | 企业端数据统计页面 | API 返回数据为 0 | | `mini-ui-packages/yongren-statistics-ui/src/api/enterpriseStatisticsClient.ts` | 统计 API 客户端 | 调用 `/api/v1/yongren/statistics/*` | | `mini-ui-packages/rencai-attendance-ui/src/pages/AttendancePage/AttendancePage.tsx` | 人才端考勤记录页面 | 使用 Mock 数据,未连接真实 API | | `mini-ui-packages/rencai-attendance-ui/src/utils/mockAttendanceData.ts` | Mock 数据生成工具 | 出勤率计算逻辑错误 | | `mini-ui-packages/yongren-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` | 企业端首页仪表板 | 人才库跳转、通知模块 | ### Technical Decisions **问题根源分析:** **问题2(企业端数据统计为0):** - 组件正常,使用 `enterpriseStatisticsClient` 调用 API - API 端点:`/api/v1/yongren/statistics/*` - 可能原因: 1. 后端 API 返回空数据(数据库无数据) 2. JWT token 中的 companyId 无效 3. 企业用户没有关联的人才数据 - **修复方向**:检查后端 API 响应,确保数据正确返回 **问题6(人才端考勤数据为0):** - 当前使用 **Mock 数据** (`generateMockAttendanceData`) - **未连接真实 API** - 初始状态 `normalDays: 0` 可能导致显示问题 - **修复方向**:连接真实 API 或修复 Mock 数据初始化 **问题9(人才端出勤率计算136%):** - 计算逻辑在 `calculateAttendanceStats` 函数: ```typescript const attendanceRate = workDays.length > 0 ? Math.round((normalDays / workDays.length) * 100) : 0 ``` - 问题:`normalDays` 包含周末,但 `workDays` 应排除周末 - **修复方向**:修正计算公式,确保出勤率不超过 100% - **需求**:改为固定值(22天,100%) ## Implementation Plan ### Pre-Development Tasks(开始前的准备) **✅ 所有前置任务已完成**(通过9个并行Agent探索) - [x] **前置任务 0.1:解决测试账号 401 认证问题** - ✅ 已发现正确的测试账号 - **企业端测试账号**:`13800013800`(对应公司127,有3个在职人员) - **人才端测试账号**:`13800138004` - 数据库状态:公司127有完整数据(3人在职,薪资1000-3000元) - [x] **前置任务 0.2:API 发现** - ✅ 企业端统计API:`/api/v1/yongren/statistics/*` - ✅ 订单详情API:`/api/v1/yongren/order/company-orders/:id/stats` - ✅ 薪资记录API:`/api/v1/talent/employment/salary-records?month=YYYY-MM&take=N` - [x] **前置任务 0.3:代码调查** - ✅ 订单管理:`allin-packages/order-management-ui/src/components/OrderDetailModal.tsx` - ✅ 订单详情(小程序):`mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx` - ✅ 远程打卡:`mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` 第151行 - ✅ 薪资记录:`mini-ui-packages/rencai-employment-ui/src/pages/EmploymentPage/EmploymentPage.tsx` ### Implementation Strategy(实施方案选择) **针对问题6和问题9的矛盾,明确选择:** 本次修复采用 **方案 A(短期修复)**: - **问题6(考勤数据)**:继续使用 Mock 数据,修正返回值确保不为 0 - **问题9(出勤率)**:修改 Mock 数据生成函数,返回固定值(22天,100%) **理由**:真实 API 端点未知,连接成本高。先用 Mock 修复前端显示问题,后续再连接真实 API。 **长期计划(可选,非本次范围)**: - 任务 X.1:设计并实现考勤数据 API - 任务 X.2:前端连接真实 API,替换 Mock 数据 - 任务 X.3:移除 Mock 数据相关代码 --- #### 高优先级任务(数据类) **问题2:企业端-数据统计模块无数据展示** - [x] **探索完成** - 数据库中实际有数据! - **本地数据库状态**(公司127): - 在职人数:3人 - 平均薪资:¥2000 - 在职率:100% - 残疾类型:视力残疾(3人) - 性别分布:1男2女 - [ ] **任务 2.1:使用正确的测试账号登录** - 动作:使用企业端测试账号 `13800013800` 登录 - 验证:检查 JWT token 中的 companyId 是否为 127 - 备注:原文档记录的账号 `13800138005` 可能不正确 - [ ] **任务 2.2:验证 API 响应** - 动作:使用浏览器 DevTools 查看网络请求 - 确认:API `/api/v1/yongren/statistics/*` 返回状态码 - 如果返回 403:检查 JWT token 中的 companyId - 如果返回 200 但数据为空:检查后端查询逻辑 **问题6:人才端-本月出勤数据为0** - [x] **探索完成** - 问题根源已定位 - **文件**:`mini-ui-packages/rencai-attendance-ui/src/pages/AttendancePage/AttendancePage.tsx` - **问题位置**:第37-43行,初始状态 `normalDays: 0` - [ ] **任务 6.1:修复初始状态** - 文件:`mini-ui-packages/rencai-attendance-ui/src/pages/AttendancePage/AttendancePage.tsx` 第37-43行 - 修改前: ```typescript const [stats, setStats] = useState(() => ({ attendanceRate: 100, normalDays: 0, // ← 问题根源 lateCount: 0, earlyLeaveCount: 0, absentCount: 0 })) ``` - 修改后: ```typescript const [stats, setStats] = useState(() => { const { year, month } = getCurrentYearMonth() return generateMockAttendanceData(year, month).stats }) ``` - 验证:首次渲染时应显示正确的统计数据,而非0 **问题9:人才端-出勤率计算异常** - [x] **探索完成** - 问题根源已定位 - **文件**:`mini-ui-packages/rencai-attendance-ui/src/utils/mockAttendanceData.ts` - **问题位置**:第51-75行 `calculateAttendanceStats` 函数 - **根本原因**:`normalDays` 从所有记录统计,包含周末的 NORMAL 状态 - [ ] **任务 9.1:修复 normalDays 计算逻辑** - 文件:`mini-ui-packages/rencai-attendance-ui/src/utils/mockAttendanceData.ts` 第58行 - 修改前: ```typescript const normalDays = records.filter(r => r.status === AttendanceStatus.NORMAL).length ``` - 修改后: ```typescript const normalDays = workDays.filter(r => r.status === AttendanceStatus.NORMAL).length ``` - 说明:只从工作日(`workDays`)中统计 NORMAL 状态,排除周末 - [ ] **任务 9.2:改为固定值(展示层修复)** - 文件:`mini-ui-packages/rencai-attendance-ui/src/utils/mockAttendanceData.ts` 第133-135行 - 动作:修改 `generateMockAttendanceData` 函数返回值 - 修改: ```typescript const stats: AttendanceStats = { attendanceRate: 100, normalDays: 22, lateCount: 0, earlyLeaveCount: 0, absentCount: 0 } ``` - 备注:根据业务需求直接返回固定值(22天,100%) #### 中优先级任务(功能完善) **问题1:网页端-订单管理薪资改为可手动输入** - [x] **探索完成** - 文件和代码位置已定位 - **文件**:`allin-packages/order-management-ui/src/components/OrderDetailModal.tsx` - **薪资字段位置**:第888行 - [ ] **任务 1.1:添加薪资编辑功能** - 文件:`allin-packages/order-management-ui/src/components/OrderDetailModal.tsx` - 位置1:第251行后 - 添加薪资更新 mutation - 位置2:第501行后 - 添加 `handleUpdateSalary` 处理函数 - 位置3:第888行 - 将纯文本改为 Input 组件 - 修改前: ```tsx ¥{person.salaryDetail || 0} ``` - 修改后: ```tsx { const value = parseFloat(e.target.value); if (!isNaN(value) && value !== (person.salaryDetail || 0)) { handleUpdateSalary(person.personId, value); } }} className="w-24" /> ``` - 注意:需确认后端 API `PUT /orders/persons/salary` 是否存在 **问题3:企业端-订单详情打卡数据改为固定内容** - [x] **探索完成** - 文件和代码位置已定位 - **文件**:`mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx` - **API端点**:`/api/v1/yongren/order/company-orders/:id/stats` - [ ] **任务 3.1:修改打卡数据显示为固定值** - 文件:`mini-ui-packages/yongren-order-management-ui/src/pages/OrderDetail/OrderDetail.tsx` - **位置1**:第540行 - 打卡完成率 - **位置2**:第547行 - 工资视频百分比 - **位置3**:第554行 - 个税视频百分比 - 修改前: ```tsx {statistics?.checkinStats.percentage || 0}% {statistics?.salaryVideoStats.percentage || 0}% {statistics?.taxVideoStats.percentage || 0}% ``` - 修改后: ```tsx 100% 100% 100% ``` - 说明:保持 current/total 的动态显示,只将百分比固定为 100% **问题5:人才端-小程序远程打卡提示修改** - [x] **探索完成** - 文件和代码位置已定位 - **文件**:`mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - **位置**:第151行 `handleClockIn` 函数 - [ ] **任务 5.1:修改远程打卡提示文案** - 文件:`mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` 第151行 - 修改前: ```typescript const handleClockIn = () => { Taro.showToast({ title: '远程打卡功能开发中', icon: 'none' }) } ``` - 修改后: ```typescript const handleClockIn = () => { Taro.showToast({ title: '已打卡成功', icon: 'success' }) } ``` - 说明:纯文案修改,图标从 `none` 改为 `success` #### 低优先级任务(优化类) **问题4:企业端-首页人才库点击无跳转** - [x] **探索完成** - 问题根源已定位 - **文件**:`mini-ui-packages/yongren-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - **问题根源**:使用了 `Taro.navigateTo` 而非 `Taro.switchTab` - **原因**:人才库页面是 tabBar 页面,`navigateTo` 无法跳转 - [ ] **任务 4.1:修复跳转方法** - 文件:`mini-ui-packages/yongren-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` 第130行 - 修改前: ```typescript case 'talentPool': Taro.navigateTo({ url: '/pages/yongren/talent/list/index' }) break ``` - 修改后: ```typescript case 'talentPool': Taro.switchTab({ url: '/pages/yongren/talent/list/index' }) break ``` **问题7:人才端-薪资记录显示范围修改** - [x] **探索完成** - 文件和代码位置已定位 - **文件**:`mini-ui-packages/rencai-employment-ui/src/pages/EmploymentPage/EmploymentPage.tsx` - **当前行为**:显示所有薪资记录中最近的 3 条 - **后端支持**:已支持 `month` 参数过滤 - [ ] **任务 7.1:修改薪资查询时间范围** - 文件:`mini-ui-packages/rencai-employment-ui/src/pages/EmploymentPage/EmploymentPage.tsx` 第60-72行 - 修改前: ```typescript const res = await talentEmploymentClient.employment['salary-records'].$get({ query: { take: 3 } }) ``` - 修改后: ```typescript const now = new Date() const lastMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1) const monthStr = `${lastMonth.getFullYear()}-${String(lastMonth.getMonth() + 1).padStart(2, '0')}` const res = await talentEmploymentClient.employment['salary-records'].$get({ query: { month: monthStr, take: 3 } }) ``` - 说明:只修改前端,后端已支持 `month` 参数 **问题8:人才端-首页去掉最新通知模块** - [x] **探索完成** - 文件和代码位置已定位 - **文件**:`mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - **⚠️ 重要说明**:问题标题说"企业端",但截图实际是**人才端首页** - **通知模块位置**:第307-343行 - [ ] **任务 8.1:移除最新通知模块** - 文件:`mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - **位置1**:第44-51行 - 删除 `Notification` 接口定义 - **位置2**:第71-77行 - 删除 `notifications` 常量数组 - **位置3**:第307-343行 - 删除整个"最新通知列表"区块 - 备注:企业端首页本身就没有通知模块,无需修改 ### Acceptance Criteria #### 高优先级 AC **问题2:企业端-数据统计模块** - [ ] **AC 2.1:** Given 企业用户已登录,when 访问数据统计页面,then 显示正确的在职人数、平均薪资、在职率(非 0) - [ ] **AC 2.2:** Given API 返回空数据,when 显示统计卡片,then 显示"暂无数据"而非"0" - [ ] **AC 2.3:** Given 数据加载失败,when 发生错误,then 显示友好的错误提示 **问题6:人才端-本月出勤数据** - [ ] **AC 6.1:** Given 人才用户已登录,when 访问考勤记录页面,then 显示正确的本月出勤天数(非 0) - [ ] **AC 6.2:** Given 数据加载中,when 首次访问页面,then 显示 loading 状态而非"0" - [ ] **AC 6.3:** Given 无考勤数据,when 用户没有打卡记录,then 显示"暂无数据"提示 **问题9:人才端-出勤率计算** - [ ] **AC 9.1:** Given 计算出勤率,when 正常出勤天数超过工作日,then 出勤率不超过 100%(计算层要求) - [ ] **AC 9.2:** Given 需求要求(展示层),when 用户访问考勤记录页面,then 显示固定值(22天,100%) - 注:这是展示层的固定值,不代表实际计算结果 - [ ] **AC 9.3:** Given 计算逻辑修正,when 任何输入情况,then 出勤率始终 ≤ 100%(计算层要求) #### 中优先级 AC **问题1:订单管理薪资输入** - [ ] **AC 1.1:** Given 订单详情页,when 点击薪资字段,then 可以手动输入/修改薪资值 - [ ] **AC 1.2:** Given 修改薪资后,when 点击保存,then 数据成功提交到后端 **问题3:订单详情打卡数据** - [ ] **AC 3.1:** Given 订单详情页,when 查看打卡数据统计,then 显示固定值(100%, 100%, 100%) - [ ] **AC 3.2:** Given 固定值显示,when 刷新页面,then 值保持不变 **问题5:远程打卡提示** - [ ] **AC 5.1:** Given 远程打卡按钮,when 点击按钮,then 显示"已打卡成功"提示 - [ ] **AC 5.2:** Given 提示修改,when 用户看到提示,then 不再显示"该功能开发中" #### 低优先级 AC **问题4:人才库跳转** - [ ] **AC 4.1:** Given 首页人才库按钮,when 点击,then 正确跳转到人才列表页面 **问题7:薪资记录范围** - [ ] **AC 7.1:** Given 薪资记录页面,when 查询数据,then 显示上个月完整月份的薪资记录 - 例如:2026年3月查询时,显示2026年2月1日-2月28日的薪资 - 边界情况:如果上个月无数据,then 显示"暂无数据"提示 **问题8:首页通知模块** - [ ] **AC 8.1:** Given 首页,when 页面加载,then 不显示"最新通知"模块 - [ ] **AC 8.2:** Given 移除通知模块,when 页面渲染,then 布局正常无空白 ## Additional Context ### Dependencies **前端依赖:** - `@tanstack/react-query` - 数据获取和缓存 - `@tarojs/components` - Taro 小程序组件库 - `@d8d/mini-shared-ui-components` - 共享 UI 组件 - `@d8d/yongren-shared-ui` - 企业端共享组件 - `@d8d/rencai-shared-ui` - 人才端共享组件 **后端依赖:** - `/api/v1/yongren/statistics/*` - 企业端统计 API - 待确认:人才端考勤 API 端点 - 待确认:订单管理 API 端点 **其他依赖:** - JWT token 中的 companyId(用于企业端数据隔离) - 数据库中的考勤数据和统计数据 ### Testing Strategy **E2E 测试:** - 使用 Playwright 验证数据统计页面正确显示数据 - 使用 Playwright 验证考勤记录页面正确显示出勤数据 - 验证出勤率计算不超过 100% **单元测试:** - 测试 `calculateAttendanceStats` 函数的各种边界情况 - 测试出勤率计算逻辑(正常、全勤、缺勤、迟到等) - 测试固定值返回逻辑 **单元测试用例(出勤率计算):** ```typescript describe('calculateAttendanceStats', () => { it('正常情况:20天工作日,出勤20天 → 100%', () => { const result = calculateAttendanceStats(/* 20 work days, 20 present */) expect(result.attendanceRate).toBe(100) expect(result.normalDays).toBe(20) }) it('全勤:22天工作日,出勤22天 → 100%', () => { const result = calculateAttendanceStats(/* 22 work days, 22 present */) expect(result.attendanceRate).toBe(100) }) it('缺勤:22天工作日,出勤15天 → 68%', () => { const result = calculateAttendanceStats(/* 22 work days, 15 present */) expect(result.attendanceRate).toBe(68) }) it('边界:22天工作日,出勤0天 → 0%', () => { const result = calculateAttendanceStats(/* 22 work days, 0 present */) expect(result.attendanceRate).toBe(0) }) it('边界:22天工作日,出勤30天 → 100%(上限)', () => { const result = calculateAttendanceStats(/* 22 work days, 30 present */) expect(result.attendanceRate).toBe(100) // 不超过100 }) }) ``` **固定值验证测试:** ```typescript describe('generateMockAttendanceData - 固定值模式', () => { it('应返回固定的出勤率100%和22天', () => { const { stats } = generateMockAttendanceData(2026, 3) expect(stats.attendanceRate).toBe(100) expect(stats.normalDays).toBe(22) }) }) **手动测试:** - 企业端登录后查看数据统计页面 - 人才端登录后查看考勤记录页面 - 验证远程打卡提示文案 - 验证人才库跳转功能 ### Notes **探索完成后的新发现:** 1. **测试账号信息更新**: - 企业端正确账号:`13800013800`(对应公司127,有3个在职人员) - 人才端账号:`13800138004` - 原文档记录的 `13800138005` 可能不正确 2. **数据库状态**(公司127): - 在职人数:3人(刘成雨、王霞、吴桂英) - 平均薪资:¥2000(3000+2000+1000÷3) - 残疾类型:全部为视力残疾 - 性别分布:1男2女 3. **问题8端点说明**: - 问题标题说"企业端-首页去掉最新通知模块" - 实际截图显示的是**人才端首页**(`rencai-dashboard-ui`) - 企业端首页(`yongren-dashboard-ui`)本身就没有通知模块 **高风险项目:** - 问题1(订单薪资编辑)需要确认后端 API `PUT /orders/persons/salary` 是否存在 - 问题2(数据统计)需要使用正确的测试账号验证 **已知限制:** - 考勤数据仍使用 Mock 数据,未连接真实 API - 订单管理薪资编辑的后端 API 端点待确认 **后续考虑:** - 问题3(打卡数据固定值)是临时修复,后续可能需要恢复动态数据 - 建议为所有关键数据添加 loading 和错误状态 - 建议添加数据刷新功能(下拉刷新) - 考虑添加离线缓存功能