ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes "P2ORG-0","P2-ORG 只读巡检合同建档","建立 R7E 后组织账号主数据只读巡检合同,承接 P2D 中唯一 GO_TO_CONTRACT 项;本合同只做脱敏只读审计、影响分级和修复分流,不写生产账号数据。","1) CSV 校验通过;2) P2D 旧口径已修正;3) 文档索引和事实源矩阵登记 P2-ORG;4) 不新增业务 API、schema、feature flag 或前端功能;5) 不打印远端 env、手机号、邮箱、密码哈希、token 或企业微信真实标识。","受影响流程:员工提交审批后按主管链流转,审批人和财务账号保持 active,企业微信绑定可用于入口和 deeplink;验证步骤:validate_issues_csv.py 本 CSV;validate_issues_csv.py P2D CSV;rg 核对 P2D-CORR/P2-ORG/P2-FIN/P2-OCR 口径;git diff --check。","python3|rg|git|manual","DONE","DONE","DONE","issues/2026-05-16_02-04-27-p2-org-readonly-master-data-audit.csv|issues/2026-05-16_00-19-21-p2-decision-followup.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[]","完成:P2D-CORR 已修正 P2-FIN/P2-OCR/P2D-7 旧口径;本 CSV 校验通过;回滚路径为删除本 CSV 登记和相关索引回填;本行不改运行环境。" "P2ORG-1","只读审计脚本与输出口径","新增或确认只读审计脚本,统一输出组织账号、角色、主管链、审批待办和企业微信绑定的脱敏摘要。","1) 脚本只执行 SELECT 或 READ ONLY 事务;2) 输出只含员工号、状态、角色摘要、问题类型和计数;3) 不输出手机号、邮箱、密码哈希、token、外部企业微信 ID;4) 支持 text/json;5) 不作为应用运行时依赖。","受影响流程:组织主数据审计和后续修复分流;验证步骤:cd server && node --check src/scripts/audit-org-master-data.js;cd server && node src/scripts/audit-org-master-data.js --help;cd server && node src/scripts/audit-org-master-data.js --format=json。","node|manual","DONE","DONE","DONE","server/src/scripts/audit-org-master-data.js|server/package.json|artifacts/qa-flow","[""P2ORG-0""]","完成:新增 npm script audit:org-master-data 和 src/scripts/audit-org-master-data.js;脚本使用 PostgreSQL BEGIN READ ONLY,只输出 employee_no/status/roles/counts;node --check、--help、json/text 执行通过;报告 artifacts/qa-flow/p2-org-readonly-audit-20260516-020427/。" "P2ORG-2","主管链只读审计","审计启用员工直属主管缺失、主管停用、主管自指和主管链循环,识别会阻断审批提交或造成自审的主数据风险。","1) 缺直属主管员工有脱敏摘要;2) 主管停用或归档能识别;3) 自指和循环链可识别;4) CEO/root 观察项与员工阻断项分开;5) 不写修复。","受影响流程:报销、请假、采购提交后默认进入直属主管审批;验证步骤:运行 P2ORG-1 脚本并核对 missingDirectManager、disabledManager、selfManagerLoop、managerChainCycle 分组;人工判断是否需要 P2-ORG-FIX。","node|manual","DONE","DONE","DONE","server/src/scripts/audit-org-master-data.js|artifacts/qa-flow","[""P2ORG-1""]","完成:当前 DATABASE_URL 巡检 missingDirectManager=0、disabledManager=0、selfManagerLoop=0、managerChainCycle=0;rootNoManager=1 为 CEO/root 观察项;未写 employee.direct_manager_id。" "P2ORG-3","停用审批人和角色持有人审计","审计 pending 待办是否分配给停用/归档审批人,以及审批角色是否没有 active 持有人。","1) 停用审批人 pending 待办可计数;2) assignee_role 无 active 持有人可计数;3) 审批历史不被修改;4) 不重派待办;5) 结果映射到流程影响。","受影响流程:审批人处理 PC/mobile/企业微信 deeplink 待办;验证步骤:运行 P2ORG-1 脚本并核对 pendingInactiveAssignees、pendingRoleWithoutActiveHolder、configuredRoleWithoutActiveHolder 分组。","node|manual","DONE","DONE","DONE","server/src/scripts/audit-org-master-data.js|artifacts/qa-flow","[""P2ORG-1""]","完成:pendingInactiveAssignees=0、pendingRoleWithoutActiveHolder=0、configuredRoleWithoutActiveHolder=0;角色 active holder counts 为 manager=1、ceo=1、finance=2、finance_mgr=1、hr=1、administration=1;未改 workflow_tasks。" "P2ORG-4","admin-only 与财务管理员混授审计","审计仅具备系统管理权限的账号是否承担业务审批,以及财务角色和系统管理员角色是否混授。","1) admin-only pending 待办为 0 或有问题摘要;2) 启用审批规则不得使用 admin 作为业务审批角色;3) 财务/admin 混授账号有摘要;4) 不导出敏感字段;5) 给出风险等级。","受影响流程:业务审批、财务复核、系统管理最小权限;验证步骤:运行 P2ORG-1 脚本并核对 adminOnlyPendingTasks、approvalRulesUseAdmin、financeAdminMixedRoles 分组。","node|manual","DONE","DONE","DONE","server/src/scripts/audit-org-master-data.js|artifacts/qa-flow","[""P2ORG-1""]","完成:adminOnlyPendingTasks=0、approvalRulesUseAdmin=0、financeAdminMixedRoles=0;admin 仍只代表系统管理权限,不自动获得业务审批权。" "P2ORG-5","企业微信绑定异常审计","审计企业微信绑定与 OA 员工主数据是否漂移,区分未绑定观察项、停用账号仍绑定和重复/异常绑定。","1) active 员工未绑定可作为观察项计数;2) 停用/归档账号仍绑定可识别;3) 不输出 external_user_id 或 open_user_id;4) 企业微信只作为入口、身份和通知;5) 不修改绑定。","受影响流程:企业微信入口免登、个人应用消息、deeplink 回 OA;验证步骤:运行 P2ORG-1 脚本并核对 activeWithoutWecomBinding、inactiveWithWecomBinding、bindingSummary 分组。","node|manual","DONE","DONE","DONE","server/src/scripts/audit-org-master-data.js|artifacts/qa-flow","[""P2ORG-1""]","完成:activeEmployees=8、activeWithBinding=0、activeWithoutWecomBinding=8、inactiveWithWecomBinding=0;当前连接数据源未绑定企业微信记录为低风险观察项,不阻断 PC/OA 审批链;未输出 external_user_id/open_user_id,未修改绑定。" "P2ORG-6","流程影响分级与修复分流","将只读巡检结果按阻断、高、中、低分级,并决定是否需要新建 P2-ORG-FIX 写修复合同。","1) 每类发现有数量、影响流程和建议 owner;2) 写修复必须另批窗口;3) 无问题时明确无需修复合同;4) 付款批次和图片 OCR 不因本行自动启动;5) 结果回填 CSV Notes。","受影响流程:审批提交、审批待办、财务复核、企业微信入口和后续 P2 功能准备;验证步骤:人工核对 P2ORG-1 JSON 报告 summary 和 findings;如 high/medium 问题非 0,记录 P2-ORG-FIX 候选;否则记录 no-write-fix-needed。","manual|node","DONE","DONE","DONE","issues/2026-05-16_02-04-27-p2-org-readonly-master-data-audit.csv|artifacts/qa-flow","[""P2ORG-2"",""P2ORG-3"",""P2ORG-4"",""P2ORG-5""]","完成:report.json summary 为 high=0、medium=0、low=9、recommendation=NO_WRITE_FIX_NEEDED;低风险项为 CEO/root 无直属主管观察 1 和当前连接数据源 active 员工无企业微信绑定 8;本轮不需要 P2-ORG-FIX,不启动付款批次或图片 OCR。" "P2ORG-7","权限和审批门禁复核","复核只读巡检脚本没有改变现有权限、审批和 Prisma schema 门禁。","1) Prisma schema validate 通过;2) 审计脚本语法通过;3) 必要时补 workflow/权限回归;4) 无业务代码改动;5) 不部署。","受影响流程:组织权限、审批分配、财务权限和企业微信入口;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/scripts/audit-org-master-data.js;必要时执行 server/scripts/regression-workflow-actions.sh 或权限直连回归。","npm|node|manual","DONE","DONE","DONE","server/prisma/schema.prisma|server/src/scripts/audit-org-master-data.js|server/package.json","[""P2ORG-1""]","完成:cd server && npm run prisma:validate 通过;node --check 脚本通过;本轮只新增 QA 只读脚本和 package script,未改 server/src 业务代码、client/src、Prisma schema 或权限模型,因此未跑完整 workflow 业务回归。" "P2ORG-8","索引和运行报告回填","将 P2-ORG 合同、只读证据路径和后续分流结论回写既有索引、事实源矩阵和人工试运行报告。","1) 不新建综合规划文档;2) docs/文档索引.md 登记 P2-ORG;3) docs/文档事实源状态矩阵.md 登记 P2-ORG;4) docs/trialrun/人工试运行报告.md 补充证据摘要;5) 不改 PRD 口径。","受影响流程:后续开发读取当前事实源和审计证据;验证步骤:rg -n 'P2-ORG|组织主数据|只读巡检|P2-ORG-FIX|P2D-CORR' docs issues;node scripts/qa/audit-docs.mjs --check-registry。","rg|node|manual","DONE","DONE","DONE","docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""P2ORG-6""]","完成:已回写文档索引、事实源矩阵和人工试运行报告;只登记入口、证据和状态,不新建规划文档,不改 PRD 口径。" "P2ORG-9","P2-ORG 阶段收口","完成 P2D-CORR 和 P2-ORG 只读巡检状态回填、校验和中文提交。","1) P2D CSV 校验通过;2) P2-ORG CSV 校验通过;3) audit-docs errors=0;4) git diff --check 通过;5) 中文 commit 引用 P2D-CORR/P2-ORG;6) 明确未部署。","受影响流程:P2 后续工作派工和组织账号治理闭环;验证步骤:validate_issues_csv.py P2D CSV;validate_issues_csv.py 本 CSV;node scripts/qa/audit-docs.mjs --check-registry;rg 核对关键词;git diff --check;git status --short。","python3|node|rg|git|manual","DONE","DONE","DONE","issues/2026-05-16_00-19-21-p2-decision-followup.csv|issues/2026-05-16_02-04-27-p2-org-readonly-master-data-audit.csv|docs|server/src/scripts/audit-org-master-data.js|server/package.json","[""P2ORG-8""]","完成:P2D CSV 与本 CSV 校验通过;audit-docs errors=0 warnings=1,warning 为既有 unregistered docs files=24;rg 关键词核对和 git diff --check 通过;未部署、未写生产数据、未启用付款批次或图片 OCR。"