12 KiB
12 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | R18-0 | R18-R22执行合同建档与边界冻结 | 创建并校验统一内部业务平台合同 CSV 并冻结企微仅作入口 通知 免登 项目进 OA 涉密正文离线的边界 | CSV 校验通过且明确 R18-R22 串行实施范围与不做项 | python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-21_23-00-00-r18-r22-unified-internal-workbench.csv | manual | DONE | DONE | DONE | issues/2026-03-21_23-00-00-r18-r22-unified-internal-workbench.csv|issues/2026-03-21_12-40-00-r17-small-team-go-live.csv | [] | 默认采用企业微信自建应用 OAuth 账号绑定 本地密码回退 |
| 3 | R18-1 | 企微配置与身份绑定底座 | 新增企业微信入口配置 特性开关和 WecomIdentityBinding 持久化 为后续工作台入口和免登提供事实源 | 支持读取企微入口配置 支持绑定和解绑企业微信身份 且默认关闭开关不影响现有登录 | cd server && npm run prisma:validate && npm test | manual | DONE | DONE | DONE | server/prisma/schema.prisma|server/prisma/migrations|server/src/config.js|server/src/services/featureFlags/index.js|server/src/scripts/seed-config.js|server/tests | ["R18-0"] | none |
| 4 | R18-2 | 企微登录回调与 deeplink 统一化 | 实现 /api/auth/wecom/config login callback bind unbind 并扩展 deeplink 返回地址白名单与登录回退逻辑 | 员工可从企微进入 OA 回调失败时可回退账号密码 deeplink 能安全跳转到 OA 对应页面 | cd server && npm test && ./scripts/regression-all.sh | manual | DONE | DONE | DONE | server/src/routes/auth.js|server/src/app.js|server/src/utils/signedUrl.js|server/tests | ["R18-1"] | none |
| 5 | R18-3 | 登录页 Portal 与个人页接入企微入口 | 在前端登录页 Portal 落地页与个人页加入企微入口和绑定管理 统一企微工作台默认进入 /portal | 登录页可展示企微登录按钮 已登录员工可完成绑定解绑 企微工作台打开后默认进入 Portal | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/LoginPage.tsx|client/src/pages/PortalHomePage.tsx|client/src/pages/ProfilePage.tsx|client/src/api/auth.ts|client/src/router/index.tsx | ["R18-2"] | none |
| 6 | R18-4 | 企微脱敏通知与 R18 回归 | 把现有通知模板与企微通道收敛到脱敏策略 仅发送标题 状态 截止时间 责任人和 deeplink 并完成 R18 回归 | 企微消息不暴露金额明细 合同正文和高敏字段 且现有站内通知和 deeplink 零回归 | cd server && npm test && ./scripts/regression-im-notifier.sh && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | server/src/routes/notifications.js|server/src/services/notifications/imEnqueue.js|server/src/services/integrations/im/wecom.js|deploy/trialrun/.env.example|server/tests | ["R18-2","R18-3"] | none |
| 7 | R19-1 | 项目主档 Prisma 模型与开关 | 新增 Project ProjectMember ProjectMilestone ProjectTask ProjectRisk 枚举与模型 并接入 feature flag 与 seed | 数据库可保存轻项目主档 成员 里程碑 任务 风险 且关闭开关时不影响现有业务 | cd server && npm run prisma:validate && npm test | manual | DONE | DONE | DONE | server/prisma/schema.prisma|server/prisma/migrations|server/src/services/featureFlags/index.js|server/src/scripts/seed-config.js|server/tests | ["R18-4"] | none |
| 8 | R19-2 | 项目域后端 API | 实现 projects members milestones tasks risks 的列表 创建 更新 归档接口 并补权限与审计 | 项目经理可维护成员 里程碑 任务 风险 员工可查看本人项目 管理员可归档项目 | cd server && npm test && ./scripts/regression-all.sh | manual | DONE | DONE | DONE | server/src/routes/projects.js|server/src/app.js|server/tests | ["R19-1"] | none |
| 9 | R19-3 | 项目页与详情页前端 | 新增 ProjectsPage 与 ProjectDetailPage 接入项目列表 成员 里程碑 任务 风险视图 并加入主导航 | 员工可在 OA 查看本人项目 项目经理可在单页维护里程碑 任务 风险 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/ProjectsPage.tsx|client/src/pages/ProjectDetailPage.tsx|client/src/api/projects.ts|client/src/router/index.tsx|client/src/components/navigation/NavLinks.tsx | ["R19-2"] | none |
| 10 | R19-4 | Portal 搜索与 R19 验收收口 | 把项目摘要接入 Portal 和全局搜索 并完成项目域专项回归 | Portal 能展示我的项目 逾期里程碑 高优任务 风险摘要 搜索可命中项目编号 名称 客户简称 负责人 里程碑和任务 | cd server && npm test && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | server/src/routes/portal.js|server/src/routes/search.js|client/src/pages/PortalHomePage.tsx|client/src/components/GlobalSearchDialog.tsx|server/tests|client/tests/e2e | ["R19-2","R19-3"] | none |
| 11 | R20-1 | 项目联动数据模型扩展 | 为报销 差旅 待办 周报扩展项目关联 并新增 WeeklyReportProjectLink ContractRegistry ProjectDeliveryRecord 模型 | 项目可成为报销 差旅 周报 待办和合同交付记录的统一关联键 | cd server && npm run prisma:validate && npm test | manual | DONE | DONE | DONE | server/prisma/schema.prisma|server/prisma/migrations|server/tests | ["R19-4"] | 合同台账只存元数据 不存正文附件 |
| 12 | R20-2 | 项目联动后端接口 | 实现 link-project 项目费用摘要 差旅摘要 项目周报 合同台账与交付记录接口 并补业务校验 | 报销和差旅可绑定项目 项目详情可汇总人 事 费 交付 周报和风险 | cd server && npm test && ./scripts/regression-all.sh | manual | DONE | DONE | DONE | server/src/routes/reimbursements.js|server/src/routes/travelRequests.js|server/src/routes/weeklyReports.js|server/src/routes/todos.js|server/src/routes/projects.js|server/src/routes/contractsRegistry.js|server/src/app.js|server/tests | ["R20-1"] | none |
| 13 | R20-3 | 项目联动前端与合同台账页 | 在报销 差旅 周报 待办和项目详情页接入项目选择与联动面板 并新增 ContractsRegistryPage | 员工可在现有流程里挂项目 管理层可在项目详情页查看统一执行面板 合同台账可维护元数据 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/ReimbursementsPage.tsx|client/src/pages/TravelRequestsPage.tsx|client/src/pages/WeeklyReportsPage.tsx|client/src/pages/TodosPage.tsx|client/src/pages/ProjectDetailPage.tsx|client/src/pages/ContractsRegistryPage.tsx|client/src/api/projects.ts|client/src/api/contractsRegistry.ts|client/src/router/index.tsx | ["R20-2"] | none |
| 14 | R20-4 | R20回归与验收收口 | 完成项目与审批 出差 报销 周报 待办 合同交付联动后的整体验收 | 一个项目在 OA 内可查看人 事 费 交付轻量执行面板 且原有请假 报销 差旅 周报零回归 | cd server && npm test && ./scripts/regression-workflow-actions.sh && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build && npm run test:e2e | manual | DONE | DONE | DONE | issues/2026-03-21_23-00-00-r18-r22-unified-internal-workbench.csv|server/scripts/regression-all.sh|client/tests/e2e | ["R20-2","R20-3"] | none |
| 15 | R21-1 | 涉密资料引用模型与 API | 新增 ConfidentialDocumentRef 与项目文档引用接口 并实现等级控制和查看审计 | OA 可保存涉密资料目录 链接 归档位置和离线档案号 但不保存正文附件 且查看高敏引用会写审计 | cd server && npm run prisma:validate && npm test | manual | DONE | DONE | DONE | server/prisma/schema.prisma|server/prisma/migrations|server/src/routes/confidentialDocRefs.js|server/src/routes/projects.js|server/src/app.js|server/tests | ["R20-4"] | none |
| 16 | R21-2 | 搜索与通知的涉密脱敏规则 | 对合同 项目 文档引用统一增加 confidentiality 过滤和脱敏规则 防止搜索与通知泄露敏感信息 | confidential 和 restricted 级对象不会在搜索和企微通知中暴露正文 摘要全文 价格 成本 毛利或高敏客户细节 | cd server && npm test && ./scripts/regression-im-notifier.sh | manual | DONE | DONE | DONE | server/src/routes/search.js|server/src/routes/notifications.js|server/src/services/notifications/imEnqueue.js|server/src/services/integrations/im/wecom.js|server/tests | ["R21-1"] | none |
| 17 | R21-3 | 公网访问安全强化 | 补齐公网模式下的安全配置与校验 包括 HTTPS CookieSecure 返回地址白名单 登录限流 弱密码拦截和关键会话校验 | 公网部署下可启用安全基线 企微免登和本地密码并存 且不需要把所有访问强制放到 VPN 后 | cd server && npm test && ./scripts/regression-all.sh | manual | DONE | DONE | DONE | server/src/config.js|server/src/routes/auth.js|server/src/plugins/auth.js|deploy/trialrun/.env.example|server/tests | ["R21-2"] | 优先复用现有登录失败锁定与审计能力 不重写整套认证 |
| 18 | R21-4 | R21文档同步与安全回归 | 补齐 trialrun runbook checklist 和管理员手册中的公网安全与涉密边界说明 并完成 R21 回归 | 出差员工可公网访问项目过程数据 涉密正文仍离线且高敏访问边界和审计可追溯 | cd server && npm test && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | deploy/trialrun/runbook.md|deploy/trialrun/checklist.md|docs/admin-handbook.md|docs/employee-quickstart.md|docs/feature-matrix.md | ["R21-1","R21-2","R21-3"] | none |
| 19 | R22-1 | 项目与合同台账最小导入方案 | 提供项目台账 成员分工 里程碑 合同登记 风险表的最小导入脚本和映射文档 支持 dry run 与 apply 两步 | 可把现有表格最小成本导入 OA 且涉密合同正文仍保持离线 | cd server && npm test && node src/scripts/import-project-ledgers.js --help && git diff --check | manual | DONE | DONE | DONE | server/src/scripts/import-project-ledgers.js|docs/migration-mapping.md|deploy/trialrun/checklist.md | ["R21-4"] | 导入优先脚本化 不新增重型后台导入平台 |
| 20 | R22-2 | 单平台默认路径与企微优先入口 | 把小团队默认配置切到 OA 单平台模式 企微作为首选入口 浏览器作为备用 并降噪重复主路径 | 员工默认从企微工作台进入 OA 浏览器仍可回退 采购 差旅 预算 AP 等不再干扰主导航路径 | cd server && npm test && cd ../client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | server/src/scripts/seed-config.js|server/src/routes/systemWorkspace.js|deploy/trialrun/.env.example|client/src/components/navigation/NavLinks.tsx|client/src/pages/PortalHomePage.tsx | ["R22-1"] | none |
| 21 | R22-3 | 试点观测指标与运营证据 | 扩展现有 observation 导出与 Portal 摘要 支持登录覆盖率 周报提交率 团队状态覆盖率 项目任务更新率 里程碑按期率 多平台重复录入次数和表格替代率 | 可连续记录 4 周试点证据并导出管理层可读摘要 | cd server && npm test && git diff --check | manual | DONE | DONE | DONE | server/src/scripts/export-small-team-observation.js|server/src/routes/portal.js|deploy/trialrun/observation-template.md|docs/admin-handbook.md | ["R22-2"] | none |
| 22 | R22-4 | R22最终验收与关单收口 | 完成统一平台模式下的主回归 关键 E2E 试点证据汇总与 feature matrix 同步 并关闭本合同 | 连续 4 周试点证据齐全 员工日常只操作 OA 一个业务系统 企业微信只作入口通知 涉密正文不出公网 主回归与关键 E2E 全绿 | cd server && npm run prisma:validate && npm test && ./scripts/regression-workflow-actions.sh && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build && npm run test:e2e | manual | DOING | TODO | TODO | issues/2026-03-21_23-00-00-r18-r22-unified-internal-workbench.csv|docs/feature-matrix.md|client/tests/e2e|server/scripts/regression-all.sh | ["R22-1","R22-2","R22-3"] | 建议新增 e2e:wecom-entry.spec.ts project-workbench.spec.ts confidential-boundary.spec.ts;真实 4 周试点与最终关单待现场执行;本地代码、回归与 E2E 已就绪 |