9 行
8.1 KiB
CSV
9 行
8.1 KiB
CSV
"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes"
|
|
"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 和本轮文档回写;不涉及数据库。"
|
|
"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 开关语义,不删除历史数据。"
|
|
"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。"
|
|
"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 只读复核;回滚路径:回退路由和模型,删除新增修正表,不影响请假。"
|
|
"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;回滚路径:恢复旧页面或仅显示统一空态。"
|
|
"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。"
|
|
"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。"
|