文件
hyb-oa/issues/2026-03-28_17-12-07-r40-profile-edit-and-people-export.csv
T

4.4 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2R40-0R40执行合同建档与范围冻结为档案编辑扩展与员工列表导出创建独立合同并锁定本轮不承接批量导入 考勤增强与批量操作CSV 校验通过 且明确本轮只做 profile patch 小改动 管理员编辑态与员工导出链路python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-28_17-12-07-r40-profile-edit-and-people-export.csvnoneDONEDONEDONEissues/2026-03-28_17-12-07-r40-profile-edit-and-people-export.csv[]本轮沿用现有 /employees/:id/profile 与 /exports 基础设施 reviewer 不默认启用
3R40-1档案编辑扩展让 system.users 管理员在员工档案页直接编辑 title hireDate probationEndDate lastWorkingDate 并保持普通员工仅能编辑原 4 个字段管理员保存 title hireDate probationEndDate lastWorkingDate 后刷新值保持 普通员工打开自己档案时这些字段仍为只读 且 department directManager employeeNo name phone email 维护边界不变业务流程: 管理员打开员工档案 修改职位 入职日期 试用期截止和离职日期后保存成功 刷新后值保持。普通员工打开自己档案时 仅 workLocation emergencyContactName emergencyContactPhone notes 可编辑。验证命令: cd server && node --check src/routes/employees.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEserver/src/routes/employees.js|client/src/api/employees.ts|client/src/pages/EmployeeProfilePage.tsx["R40-0"]已在 PROFILE_PATCH_SCHEMA 与 employee.update 中补写 hireDate,并把 report.dashboard.view 对他人档案的 patch 显式收紧为只读。已验证: cd server && node --check src/routes/employees.js 通过;cd server && npm test -- tests/unit/routes/employees.profile.test.js tests/unit/routes/employees.patch.test.js 通过;cd client && npm run typecheck && npm run build 通过。
4R40-2员工列表导出在人员管理页按当前筛选条件导出员工列表并复用现有 exports.js 与 blob 下载基础设施PeoplePage 仅对 system.users 显示导出按钮 导出支持 csv xlsx 并复用 q status departmentId 筛选 产出列为工号 姓名 部门 职位 手机 邮箱 账号状态 入职日期业务流程: system.users 用户进入人员管理页 设置 q status departmentId 后导出 CSV 和 Excel 文件内容与筛选一致。仅 report.dashboard.view 用户进入人员管理页时看不到导出按钮。验证命令: cd server && node --check src/routes/exports.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEserver/src/routes/exports.js|client/src/api/exports.ts|client/src/pages/PeoplePage.tsx["R40-0"]已新增 /api/exports/employees 与 exportEmployees,并在 PeoplePage 复用现有 dropdown + blob 下载模式。已验证: cd server && node --check src/routes/exports.js 通过;cd server && npm test -- tests/unit/routes/exports.employees.test.js 通过;cd client && npm run typecheck && npm run build 通过。
5R40-3QA回归与R37-3继续复盘按 agent modes 完成 R40 单项验证 状态回填 并记录 hireDate 误判与导出模式复用的后续观察R40 各状态正确回填 且 Notes 记录 hireDate 需补后端 system.users 与 report.dashboard.view 能力差异 员工导出是否证明 exports.js 模式可继续复用业务流程: 验证管理员档案编辑扩展 普通员工只读约束 PeoplePage 按组合筛选导出和非 system.users 无导出入口 并确认 R39 汇报链卡片不回归。验证命令: cd server && node --check src/routes/employees.js && node --check src/routes/exports.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEissues/2026-03-28_17-12-07-r40-profile-edit-and-people-export.csv|issues/2026-03-28_12-36-28-r37-agent-modes-governance.csv|server/src/routes/employees.js|server/src/routes/exports.js|client/src/pages/EmployeeProfilePage.tsx|client/src/pages/PeoplePage.tsx["R40-1","R40-2"]试跑结论: hireDate 从以为前端可接到确认需补后端 是一次有效纠偏;system.users 与 report.dashboard.view 的能力边界已同时在前端和后端收敛,避免只隐藏按钮但 API 仍可写;员工导出证明 exports.js 模式可继续平移复用。已验证: node --check employees.js/exports.js 通过;server 单测 3 文件 7 测试全部通过;client typecheck/build 通过。