8 行
7.4 KiB
CSV
8 行
7.4 KiB
CSV
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||
"A1","R64 执行合同建档与范围冻结","创建并校验 R64 新员工入门引导执行合同 CSV,冻结范围:1) /api/me 返回 profileCompleteness;2) 改密成功后首次进入 /portal 弹出 WelcomeDialog;3) Portal 首页新增仅新员工路径可见的 GettingStartedCard;4) localStorage 持久化引导状态。不新增 Prisma 迁移,不新增 npm 依赖。","issues/2026-04-14_r64-onboarding-guide.csv 列完整、Dependencies 为 JSON 数组字符串、A2-A6 范围与当前方案一致,且 Notes 明确无迁移、无新依赖、localStorage 持久化与回滚方式。","命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-04-14_r64-onboarding-guide.csv。检查:1) 12 列完整;2) A2-A6 依赖链合理;3) Notes 明确无迁移、无新依赖、localStorage 持久化与回滚路径。","manual","DONE","DONE","DONE","issues/2026-04-14_r64-onboarding-guide.csv","[]","回滚路径:删除本次 CSV 不影响业务。"
|
||
"A2","/api/me 增加 profileCompleteness","在 server/src/routes/me.js 的 GET /api/me 响应中新增 profileCompleteness,对紧急联系人、银行账户、头像、身份证号四项做布尔校验并按 25 分制计算 score;同步扩展前端 MeResponse 类型。","1) /api/me 返回 profileCompleteness.hasEmergencyContact/hasBankAccount/hasAvatar/hasIdNumber/score;2) score 固定为 0|25|50|75|100;3) 原有 notificationPushEnabled、roleCodes、wecomBinding 响应不回归;4) me 单测覆盖空资料与部分完成资料场景。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd server && node --check src/routes/me.js && npm test -- tests/unit/routes/me.test.js。业务:1) 四项都为空时 score=0;2) 已填两项时 score=50;3) 原有 /api/me 字段保持可用。","manual","DONE","DONE","DONE","server/src/routes/me.js|server/tests/unit/routes/me.test.js|client/src/api/types.ts|client/src/auth/AuthContext.tsx","[""A1""]","回滚路径:移除 profileCompleteness 响应字段、类型定义与兼容逻辑。无 Prisma 迁移,无新依赖。"
|
||
"A3","改密后 WelcomeDialog 欢迎引导","新增 WelcomeDialog,并在 ChangePasswordPage 改密成功后写入 hyb_oa_show_welcome 与 hyb_oa_onboarding_active;PortalHomePage 读取欢迎 flag 后弹出欢迎对话框,关闭或点击入口后清除欢迎 flag。","1) 改密成功后 navigate('/portal') 前写入 hyb_oa_show_welcome=1 与 hyb_oa_onboarding_active=1;2) /portal 首次进入显示 WelcomeDialog;3) 点击入口卡片会关闭弹窗并跳转正确页面;4) 点击“开始使用”、遮罩关闭或 ESC 关闭都会清除 hyb_oa_show_welcome;5) 不修改登录流程和改密校验逻辑。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd client && npm run typecheck && npm run build。业务:1) 改密成功后首次进入 /portal 弹出欢迎对话框;2) 关闭后不重复显示;3) 入口跳转到请假/报销/考勤/个人设置/通知中心。","manual","DONE","DONE","DONE","client/src/pages/ChangePasswordPage.tsx|client/src/components/onboarding/WelcomeDialog.tsx|client/src/pages/PortalHomePage.tsx","[""A1"",""A2""]","回滚路径:移除 WelcomeDialog 组件与改密后写入欢迎 flag 的逻辑。引导状态仅保存在 localStorage。"
|
||
"A4","Portal 首页入门清单卡片","在 PortalHomePage 的 Hero 下方、QuickActionsPanel 上方新增 GettingStartedCard,仅在 hyb_oa_onboarding_active=1 且 hyb_oa_getting_started_dismissed != 1 时显示,使用 /api/me 返回的 profileCompleteness 与静态规则计算完成进度。","1) GettingStartedCard 只在新员工 onboarding 本地路径显示;2) “完善个人资料”在 profileCompleteness.score >= 50 时显示已完成;3) 进度条和已完成数量按 4 项规则正确显示;4) 点击“关闭清单”后写入 hyb_oa_getting_started_dismissed=1 并隐藏;5) 现有 Hero、快捷操作、公告等 Portal 区块不回归。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd client && npm run typecheck && npm run build。业务:1) 预置 onboarding flag 后打开 /portal 可见“快速上手”;2) 关闭欢迎弹窗后同次 onboarding 流仍可见清单;3) 关闭清单后刷新不再显示。","manual","DONE","DONE","DONE","client/src/pages/PortalHomePage.tsx|client/src/components/onboarding/WelcomeDialog.tsx|client/src/api/types.ts","[""A1"",""A2"",""A3""]","回滚路径:移除 GettingStartedCard、本地 onboarding 标记读取与进度显示逻辑。引导状态仅保存在 localStorage。"
|
||
"A5","测试与回归验证","执行 R64 后端 me 路由检查、前端 typecheck/build,并扩展现有 Portal E2E mock 与 onboarding 场景,确认 profileCompleteness、WelcomeDialog 和 GettingStartedCard 无回归。","1) /api/me 返回 profileCompleteness;2) server/tests/unit/routes/me.test.js 通过;3) client typecheck/build 通过;4) login-portal-ux 相关 mock 可承接 profileCompleteness;5) onboarding 场景可验证欢迎弹窗与清单显示/关闭逻辑。","命令:export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd server && node --check src/routes/me.js && npm test -- tests/unit/routes/me.test.js && cd ../client && npm run typecheck && npm run build。业务:1) 预置 hyb_oa_show_welcome=1 与 hyb_oa_onboarding_active=1 打开 /portal,可见欢迎弹窗;2) 关闭欢迎后可见快速上手;3) 点击关闭清单后卡片消失。","manual","DONE","DONE","DONE","server/src/routes/me.js|server/tests/unit/routes/me.test.js|client/src/api/types.ts|client/src/auth/AuthContext.tsx|client/src/pages/ChangePasswordPage.tsx|client/src/components/onboarding/WelcomeDialog.tsx|client/src/pages/PortalHomePage.tsx|client/tests/e2e/login-portal-ux.spec.ts","[""A2"",""A3"",""A4""]","回滚路径:若 post-check 或 onboarding 场景失败,暂停提交并回退对应 R64 代码。无 Prisma 迁移,无新依赖。"
|
||
"A6","QA、状态回填与提交收口","在所有校验通过后回填 R64 CSV 状态,确认 /api/me、WelcomeDialog、GettingStartedCard 与 Portal 首页均符合预期,并完成 git commit 收口。","1) issues/2026-04-14_r64-onboarding-guide.csv 的 Dev_Status、Review1_Status、Regression_Status 按实测结果回填;2) 所有验证命令通过;3) git commit 成功,提交信息为 R64 A1-A6:新员工入门引导。","命令:1) python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-04-14_r64-onboarding-guide.csv;2) export PATH=/home/shunli/.nvm/versions/node/v22.20.0/bin:$PATH && cd server && node --check src/routes/me.js && npm test -- tests/unit/routes/me.test.js && cd ../client && npm run typecheck && npm run build;3) git status 确认仅包含 R64 相关变更。业务:核对改密后欢迎弹窗、Portal 入门清单和 /api/me 完成度字段最终行为与方案一致。","manual","DONE","DONE","DONE","issues/2026-04-14_r64-onboarding-guide.csv|server/src/routes/me.js|server/tests/unit/routes/me.test.js|client/src/api/types.ts|client/src/auth/AuthContext.tsx|client/src/pages/ChangePasswordPage.tsx|client/src/components/onboarding/WelcomeDialog.tsx|client/src/pages/PortalHomePage.tsx|client/tests/e2e/login-portal-ux.spec.ts","[""A5""]","回滚路径:若验证失败则不提交,先修复后再回填状态。commit message:R64 A1-A6:新员工入门引导。无 Prisma 迁移,无新依赖。"
|