8.1 KiB
8.1 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | ATTV1-0 | 合同建档与口径冻结 | 建立考勤统一入口与企微打卡同步 V1 合同,固定企业微信只负责打卡原始采集和风控,所有审批统一在 OA;本轮可改业务代码、schema、前端和文档,但不接企微原生审批、不保存完整定位或原始 payload。 | 1) CSV 校验通过;2) 明确打卡在企微、审批在 OA;3) 明确关闭历史 OA 自建打卡;4) 明确企微同步缺配置时可 SKIP 但不得伪造 PASS。 | 受影响流程:考勤产品口径 -> 实施合同 -> 后续开发验收;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_14-59-28-attendance-unified-wecom-sync-v1.csv。 | python3|manual | DONE | DONE | DONE | issues/2026-05-17_14-59-28-attendance-unified-wecom-sync-v1.csv | [] | 回滚路径:回退本 CSV 和本轮文档回写;不涉及数据库。 |
| 3 | ATTV1-1 | 关闭历史 OA 自建打卡 | 将 attendance_v1 从正式能力中关闭:移除 PC Portal、移动首页、导航里的上班/下班打卡动作,保留历史表和旧 API 关闭态,不删除历史数据。 | 1) 普通用户 PC/移动不再看到 OA 上下班打卡按钮;2) /attendance 不再是自建打卡页面;3) /api/attendance/clock-in、clock-out、admin/backfill 在关闭态返回 409;4) attendance_records 和 attendance_policies 保留。 | 受影响流程:员工进入 PC/移动首页 -> 不看到 OA 打卡 -> 访问旧 API 得到关闭态;验证步骤:cd server && node --check src/routes/attendance.js src/routes/portal.js;cd client && npm run typecheck && npm run build;Playwright 检查 /portal、/mobile 无 OA 打卡按钮。 | node|npm|playwright | DONE | DONE | DONE | server/src/routes/attendance.js|server/src/routes/portal.js|server/src/services/featureFlags/index.js|client/src/pages/PortalHomePage.tsx|client/src/pages/MobilePortalPage.tsx|client/src/components/navigation/NavLinks.tsx | ["ATTV1-0"] | 涉及功能开关和 UI 入口;回滚路径:恢复旧入口和 attendance_v1 开关语义,不删除历史数据。 |
| 4 | ATTV1-2 | 企微打卡同步最小能力 | 新增 attendance_unified_v1 flag、企微打卡同步批次和原始摘要表,提供管理员/HR 手动同步接口;同步使用企微打卡数据接口,缺 WECOM_CHECKIN_SECRET 或权限时记录 SKIP。 | 1) 新 flag 默认 force_off;2) 新表不复用旧 OA 打卡表;3) 同步输出只含脱敏 ID、数量、状态、错误码;4) 不保存完整定位、人脸、设备明文或原始 payload;5) 员工映射复用 wecom_identity_bindings.external_user_id。 | 受影响流程:管理员触发同步 -> 获取企微打卡摘要 -> 写同步批次和摘要 -> 月度汇总可读取;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/routes/attendance.js src/services/integrations/wecomCheckin.js;npm test 覆盖 mock provider、缺配置 SKIP、userid 映射和脱敏。 | node|npm|prisma | DONE | DONE | DONE | server/prisma/schema.prisma|server/prisma/migrations/*|server/src/routes/attendance.js|server/src/services/integrations/wecomCheckin.js|server/src/config.js|server/src/services/featureFlags/index.js|server/.env.example|deploy/trialrun/.env.example|server/tests/unit/routes/attendance.test.js | ["ATTV1-1"] | 涉及 Prisma 迁移;回滚路径:回退代码并在数据库回滚中 DROP 新增企微同步表和新 flag 记录;不触碰历史 attendance_records。 |
| 5 | ATTV1-3 | OA 考勤修正审批 | 新增 OA 补卡、外出、加班三类考勤修正申请,复用统一审批中心;补卡只解释企微缺卡,不向企微写回。 | 1) 员工可提交补卡/外出/加班申请;2) 申请进入 OA 统一审批并可撤回或被审批;3) 审批通过后进入月度考勤解释;4) 普通员工只能看本人,主管/HR/管理员按权限查看;5) 审计记录完整。 | 受影响流程:员工提交修正 -> OA 审批 -> 月度考勤解释;验证步骤:node --check routes 和 workflow 相关文件;npm test 覆盖提交、权限、撤回、审批回写、审计。 | node|npm | DONE | DONE | DONE | server/src/routes/attendanceCorrections.js|server/src/routes/workflow.js|server/prisma/schema.prisma|server/tests/unit/routes/attendanceCorrections.test.js | ["ATTV1-2"] | 涉及审批和状态机,需 reviewer 只读复核;回滚路径:回退路由和模型,删除新增修正表,不影响请假。 |
| 6 | ATTV1-4 | 考勤汇总页和移动入口调整 | 将 /attendance 改为企微考勤汇总与解释页;员工看本人,主管/HR/管理员看团队;移动首页只保留企业微信打卡说明和考勤汇总入口,不提供 OA 打卡动作。 | 1) /attendance 文案明确日常打卡在企业微信、审批解释在 OA;2) 月度汇总展示企微打卡摘要、OA 请假、补卡、外出、加班解释;3) 角色视图按权限裁剪;4) 移动 320/360/375/390/393/414/430 无溢出。 | 受影响流程:员工/主管/HR/管理员查看考勤 -> 发起修正 -> 查看审批状态;验证步骤:cd client && npm run typecheck && npm run build;Playwright 覆盖 PC /attendance、移动首页、企业微信 UA。 | npm|playwright | DONE | DONE | DONE | client/src/pages/AttendancePage.tsx|client/src/pages/MobilePortalPage.tsx|client/src/api/attendance.ts|client/tests/e2e | ["ATTV1-3"] | 页面需参考 docs/产品设计规则.md;回滚路径:恢复旧页面或仅显示统一空态。 |
| 7 | ATTV1-5 | 权限审计隐私与回归 | 收口权限、审计、隐私和自动化回归,确保同步、修正、导出和查看不泄露企微 secret、access token、完整定位、手机号、身份证号或原始 payload。 | 1) 普通员工不可查看他人考勤;2) 主管只能看下属;3) HR/管理员可看全员;4) 日志和测试报告脱敏;5) 旧 attendance_v1 入口关闭态稳定;6) 本地后端、前端和业务流回归通过。 | 受影响流程:同步 -> 修正审批 -> 月度汇总 -> 权限直连;验证步骤:server prisma validate、node --check、focused 单测;client typecheck/build;权限直连和移动矩阵;git diff --check。 | node|npm|playwright|git | DONE | DONE | DONE | server/tests|client/tests|scripts/qa|issues/2026-05-17_14-59-28-attendance-unified-wecom-sync-v1.csv | ["ATTV1-4"] | 如发现企微 live 凭据不足,live sync 记 SKIP;不打印 secret 或远端 env。 |
| 8 | ATTV1-6 | 文档回写部署复检和提交 | 回写现有事实源和手册,部署前本地全测;若本地通过则部署公网并复检 /ready、public bundle、live smoke、移动/企业微信 UA 和考勤关键流程。 | 1) docs/文档索引、事实源矩阵、人工试运行报告和相关规约已回写;2) Issue 状态按实测回填;3) 本地全测通过后才部署;4) 部署后公网复检通过或记录阻断;5) 中文 commit 引用 ATTV1。 | 受影响流程:事实源读取 -> 正式使用 -> 公网验收;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;公网移动/企微矩阵;git status --short。 | node|bash|playwright|git | DONE | DONE | DONE | docs/海音达OA-MVP需求规格说明书.md|docs/需求-请假考勤修正规约.md|docs/需求-企业微信基础设施规约.md|docs/管理员手册.md|docs/员工快速上手.md|docs/trialrun/人工试运行报告.md|docs/文档索引.md|docs/文档事实源状态矩阵.md | ["ATTV1-5"] | 本地全测通过,报告:business-flow-20260517-163647、business-flow-20260517-163930、ATTV1-visual-matrix-20260517-164915;公网已部署提交 916cc3b,移动首页重复考勤入口修正提交 b2b4447 后复检通过;live readiness 报告:live-smoke-readiness-20260517-171535;公网移动/企业微信矩阵 14 passed;考勤关键接口:旧 clock-in 409 attendance_v1_disabled、monthly 200、corrections 200、wecom sync 200 SKIP wecom_checkin_sync_disabled;部署规则:未覆盖远端 env,未重置数据库,未执行生产恢复;回滚路径:恢复上一部署版本并关闭 attendance_unified_v1。 |