文件
hyb-oa/issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv

12 行
10 KiB
CSV

"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes"
"HRWD-0","合同建档与边界纠偏","建立 HR-WECOM-DIRECTORY-V1 合同,固定以后不接 ERP、人事生命周期与考勤分属 HR 大域下两个子模块、OA 为员工权限审批审计主事实源、企业微信为通讯录入口通知和打卡采集基础设施。","1) Issue CSV 校验通过;2) ERP 口径从当前冻结改为未来不接入;3) 人事生命周期和考勤边界写清;4) 不使用企业微信原生审批、不接真实支付、不开放图片 OCR、不导入银行流水。","受影响流程:产品边界 -> HRWD 合同 -> 后续实现;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv。","python3|manual","DONE","DONE","DONE","issues/2026-05-17_20-00-40-hr-wecom-directory-v1.csv","[]","回滚路径:回退本 CSV 和文档口径回写;不涉及运行时。"
"HRWD-1","现状审计","核对现有 employee_lifecycle_v1、员工创建、入职转正调岗离职、账号启停和企业微信绑定能力,确认当前缺口是 OA 驱动企业微信通讯录创建更新禁用。","1) 完成现状矩阵;2) 明确已完成、可复用、缺口和外部企微配置项;3) 不误写现有绑定为通讯录自动创建;4) 不打印真实账号敏感信息。","受影响流程:员工管理 -> 入离职 -> 企业微信绑定/通讯录缺口;验证步骤:rg -n 'employee_lifecycle_v1|onboarding|offboarding|wecomIdentityBinding|WECOM_CONTACT' server/src client/src docs issues;只读核对 server/src/routes/employees.js、server/src/routes/users.js、server/src/services/integrations。","rg|manual","DONE","DONE","DONE","server/src/routes/employees.js|server/src/routes/users.js|client/src/pages/PeoplePage.tsx|docs","[""HRWD-0""]","审计不修改生产数据;只输出脱敏结论。"
"HRWD-2","企业微信通讯录同步配置","新增 hr_wecom_directory_sync_v1 feature flag、仓库外配置 WECOM_CONTACT_SYNC_ENABLED/WECOM_CONTACT_SECRET/WECOM_CONTACT_DEFAULT_DEPARTMENT_ID,并保持默认关闭。","1) feature flag key、env gate、seed 默认值和示例 env 完整;2) 缺配置时返回 SKIP/BLOCKED_BY_EXTERNAL_CONFIG;3) 不复用 WECOM_AGENT_SECRET 作为通讯录写权限 Secret;4) 配置不泄露。","受影响流程:管理员启用 HR 企微通讯录同步 -> 配置探测 -> 后续创建更新禁用;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/config.js src/services/featureFlags/index.js src/routes/featureFlags.js。","node|prisma","DONE","DONE","DONE","server/src/config.js|server/src/services/featureFlags/index.js|server/src/routes/featureFlags.js|server/src/scripts/seed-config.js|server/.env.example|deploy/trialrun/.env.example","[""HRWD-1""]","默认 force_off;回滚路径:删除新增 flag/env 读取和 seed 记录。"
"HRWD-3","入职闭环与企微创建","在 OA 创建员工/入职流程中接入企业微信通讯录创建:配置完整且 flag 开启时创建企微成员并写入绑定;失败不回滚 OA 员工创建,记录可重试同步结果。","1) OA 员工创建仍可独立成功;2) 企微创建成功后有 wecom_identity_bindings;3) 企微失败记录同步失败并可重试;4) 日志和响应脱敏手机号、secret、token 和原始 payload。","受影响流程:HR 创建员工 -> OA 账号/角色 -> 入职 checklist -> 企微通讯录创建 -> 绑定;验证步骤:cd server && npm test -- tests/unit/routes/users.write.test.js tests/unit/routes/employees.wecomDirectory.test.js。","npm|node","DONE","DONE","DONE","server/src/routes/users.js|server/src/routes/employees.js|server/src/services/integrations/wecomDirectory.js|server/tests/unit/routes","[""HRWD-2""]","企业微信 API mock 优先;live 写入必须另有公网/后台配置批准。"
"HRWD-4","离职闭环与账号禁用","完善离职闭环:离职 checklist 完成后禁用 OA 账号、递增 token_version、默认禁用企业微信成员而非删除,并保留绑定和历史审计。","1) 离职启动生成 checklist;2) checklist 完成后员工 status=archived 且 token_version 递增;3) 企业微信成员禁用成功或记录失败可重试;4) 绑定关系和历史业务记录保留;5) 存在阻断项时给出可解释提示。","受影响流程:HR 发起离职 -> checklist -> 权限回收 -> OA 账号禁用 -> 企微成员禁用;验证步骤:cd server && npm test -- tests/unit/routes/employees.wecomDirectory.test.js tests/unit/routes/users.write.test.js tests/unit/routes/auth.login.test.js。","npm|node","DONE","DONE","DONE","server/src/routes/employees.js|server/src/services/employeeLifecycle.js|server/src/services/integrations/wecomDirectory.js|server/tests/unit/routes","[""HRWD-3""]","默认禁用不删除;回滚路径:回退离职钩子,历史数据不删除。"
"HRWD-5","调岗和资料变更同步","OA 调岗、部门、主管、职位、手机号、邮箱变化后生成企业微信成员更新;同步失败不回滚 OA 变更,进入可重试记录。","1) 调岗不影响历史审批和业务单据;2) 变更成功时企微更新记录为 success;3) 失败时记录 failed/skipped 且 OA 变更保留;4) 管理员可重试。","受影响流程:HR 调岗/修改员工资料 -> OA 主数据更新 -> 企微通讯录更新;验证步骤:cd server && npm test -- tests/unit/routes/employees.wecomDirectory.test.js tests/unit/routes/employees.patch.test.js。","npm|node","DONE","DONE","DONE","server/src/routes/employees.js|server/src/routes/users.js|server/src/services/integrations/wecomDirectory.js","[""HRWD-3""]","涉及外部系统最终一致性;不做分布式事务。"
"HRWD-6","同步记录权限审计","新增企业微信通讯录同步记录表或等价审计,记录 employeeId、externalUserId、操作、状态、错误码、重试次数和脱敏摘要;限制 HR/管理员查看和重试。","1) 普通员工不可查看他人同步状态;2) HR/管理员可查看和重试;3) 审计覆盖创建、更新、禁用、重试;4) 不保存 secret/token/完整 payload。","受影响流程:同步失败 -> 管理员查看 -> 重试 -> 审计;验证步骤:cd server && npm run prisma:validate;cd server && npm test -- tests/unit/routes/employees.wecomDirectory.test.js。","prisma|npm","DONE","DONE","DONE","server/prisma/schema.prisma|server/prisma/migrations/*|server/src/routes/employees.js|server/tests/unit/routes","[""HRWD-2""]","涉及 Prisma 迁移;回滚路径:回退代码并 drop 新增同步记录表和 flag seed。"
"HRWD-7","前端人事页面调整","在 People 页面展示企业微信状态和同步状态,补齐重试入口;离职确认说明会禁用 OA 账号并尝试禁用企业微信成员;移动端只做查看和轻量入口。","1) 员工详情/列表能看到未绑定、已绑定、同步成功、同步失败、配置缺失;2) HR/管理员可重试同步;3) 离职确认文案明确影响;4) PC/移动/企业微信 UA 无布局溢出。","受影响流程:管理员打开 People -> 查看员工企微状态 -> 触发重试 -> 发起离职确认;验证步骤:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/user-onboarding.spec.ts --workers=1 --reporter=list。","npm|playwright","DONE","DONE","DONE","client/src/pages/PeoplePage.tsx|client/src/api/employees.ts|client/tests/e2e/user-onboarding.spec.ts","[""HRWD-3"",""HRWD-4"",""HRWD-6""]","页面改动遵循 docs/产品设计规则.md;不新增移动批量管理。"
"HRWD-8","文档回写部署复检和提交","回写现有事实源和手册,完成本地后端/前端/Playwright 回归;本地通过后部署公网并复检员工管理、企业微信入口、移动/企微 UA 和权限边界。","1) docs/文档索引、事实源矩阵、人工试运行报告、PRD、企业微信规约和管理员手册已回写;2) Issue 状态按实测回填;3) 本地全测通过后才部署;4) 部署后公网复检通过或记录阻断;5) 中文 commit 引用 HRWD。","受影响流程:人事生命周期 -> 企业微信通讯录同步 -> 文档事实源 -> 部署复检;验证步骤:node scripts/qa/audit-docs.mjs --check-registry;git diff --check;set -a && source ~/.hyb-oa/live-smoke.env && set +a && LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;git commit -m 'HRWD 实现人事生命周期企微通讯录同步'。","node|bash|git|playwright","DONE","DONE","DONE","docs/海音达OA-MVP需求规格说明书.md|docs/需求-企业微信基础设施规约.md|docs/管理员手册.md|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""HRWD-7""]","公网已部署并复检通过;最终报告 artifacts/qa-flow/live-smoke-readiness-20260517-205813/summary.json;企微通讯录配置缺失时 live 重试为 SKIP wecom_contact_sync_disabled;最终 payment_batch_v1=force_on,erp_sync=force_off。"
"HRWD-9","部署 seed 保护正式 feature flag","修正 seed-config 功能开关种子逻辑,只创建缺失开关,不覆盖已有正式运行时配置,避免后续部署再次把 payment_batch_v1 等正式 flag 重置为 bootstrap 默认值。","1) 已存在 feature flag 不被 seed-config 覆盖;2) 新增缺失 feature flag 仍可 bootstrap 创建;3) 部署后 payment_batch_v1 保持 force_on,erp_sync 保持 force_off;4) 不新增业务 API/schema/UI。","受影响流程:部署 -> seed-config -> 正式 feature flag 状态 -> 付款批次常开;验证步骤:cd server && node --check src/scripts/seed-config.js;set -a && source ~/.hyb-oa/live-smoke.env && set +a && SYNC_ENV=0 bash deploy/trialrun/deploy.sh;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-feature-flags.mjs --expect payment_batch_v1=force_on --expect erp_sync=force_off --expect employee_lifecycle_v1=enabled --expect hr_wecom_directory_sync_v1=disabled。","node|bash","DONE","DONE","DONE","server/src/scripts/seed-config.js","[""HRWD-8""]","完成:seed-config 改为 create-only 并忽略 P2002 冲突;第二次部署后正式 flag 检查保持 PASS,避免部署重置付款批次正式常开状态。"