R18-0/R22-4: 建立统一平台执行合同并同步矩阵

这个提交包含在:
2026-03-22 08:33:44 +08:00
父节点 42c63d7f6a
当前提交 2a1ffe66f3
共修改 2 个文件,包含 31 行新增和 0 行删除
+9
查看文件
@@ -347,3 +347,12 @@
- **R17 真可用收口**:新增小团队管理员手册、员工快速上手文档、trialrun 运行手册与检查项补充,支持以 `small_team_internal` 为默认上线模式。
- **R17-4 试点观测支撑**:`Portal` 新增管理员试点观测摘要(近 7 天登录、周报提交、团队状态覆盖率),并补充 4 周观测模板。
- **默认上线建议**:开启 `portal_home_v1`、`announcements_v1`、`presence_board_v1`、`weekly_report_v1`、`employee_lifecycle_v1`、`todo_board_v1`、`global_search_v1`;保留 `payment_batch_v1`、`cutover_console_v1` 为管理员备用能力。
## R18-R22 统一内部业务平台增量(2026-03-21)
- **事实源**:`issues/2026-03-21_23-00-00-r18-r22-unified-internal-workbench.csv`
- **R18 企业微信前台接入**:新增企业微信配置、账号绑定、工作台入口与 deeplink 回跳;企业微信定位为 `入口 + 通知 + 可选免登`,不再承接第二套业务事实。
- **R19 项目管理基础进 OA**:新增 `Project / ProjectMember / ProjectMilestone / ProjectTask / ProjectRisk` 与前后端项目页,`Portal` 与全局搜索已接入项目域。
- **R20 项目联动主链**:报销、差旅、周报、待办已支持挂项目;项目详情页可统一查看成员、里程碑、任务、风险、费用、差旅、周报、合同与交付记录。
- **R21 涉密与公网边界**:新增 `ContractRegistry`、`ConfidentialDocumentRef`;OA 只保存元数据和引用路径,Refresh 来源校验与企业微信 IM 脱敏规则已收口到公网安全基线。
- **运行口径**:员工真正操作仍集中在 `hyb-oa`;企业微信只做入口与脱敏提醒;涉密正文与附件继续留在内网文件盘、NAS 或离线档案中。
@@ -0,0 +1,22 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
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 账号绑定 本地密码回退
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
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
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
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
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
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
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
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
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""]",合同台账只存元数据 不存正文附件
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
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
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
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
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
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""]",优先复用现有登录失败锁定与审计能力 不重写整套认证
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
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""]",导入优先脚本化 不新增重型后台导入平台
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
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
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 已就绪
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 已就绪