G1-G5 同步正式审批组织与移动交互规约

这个提交包含在:
2026-05-10 19:33:34 +08:00
父节点 8da16f5d97
当前提交 ccef809628
共修改 9 个文件,包含 80 行新增和 26 行删除
@@ -3,5 +3,5 @@ R1,发布候选证据整理,"固定首轮主线 release candidate,汇总 A1-A8
R2,本地门禁与 Runbook 补强,"把 A8 本地回归真实需要的本地服务参数、命令顺序、live smoke 检查和 SKIP 规则写入当前操作手册,避免后续误判。","1) Runbook 写明 SERVE_CLIENT_DIST、OCR_PROVIDER、IM_NOTIFIER_ENABLED、FIELD_ENCRYPTION_KEY 和项目 feature env 的本地门禁用途;2) live smoke 清单链接到发布准备清单;3) 不新增业务 API、数据库迁移或部署操作。","流程级验证:人工阅读 Runbook 能复现 A8 本地门禁准备;命令:rg -n \"发布候选|SERVE_CLIENT_DIST|OCR_PROVIDER|IM_NOTIFIER_ENABLED|FIELD_ENCRYPTION_KEY|PROJECT_DOMAIN_ENABLED|release-readiness-checklist\" docs/trialrun-runbook.md docs/trialrun/live-smoke-readiness.md docs/文档索引.md。","rg|manual",DONE,DONE,DONE,"docs/trialrun-runbook.md|docs/trialrun/live-smoke-readiness.md|docs/文档索引.md","[\"R1\"]","仅补文档和清单;测试 FIELD_ENCRYPTION_KEY 只能用于本地回归,生产必须使用安全密钥且不得提交。"
R3,权限直连审计,"在部署前用员工、主管、财务、管理员账号直连主路径和备用路径,确认导航隐藏没有掩盖服务端授权缺口。","1) 形成角色 x 路径允许/拒绝矩阵;2) 普通员工直连预算、AP、ERP、完整差旅、票据中心、合同台账、付款批次等备用路径不得获得越权数据;3) 若发现服务端权限缺口,先拆独立修复 Issue,不进入部署。","流程级验证:分别登录员工、主管、财务、管理员账号 -> 直连 /budgets、/ap、/system/integrations/erp、/travel-requests、/invoice-pool、/contracts-registry、/payment-batches 和对应 API -> 记录 HTTP 状态、页面提示和是否泄露数据;命令:cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts login-portal-ux.spec.ts --workers=1。","playwright|curl|manual",DONE,DONE,DONE,"client/tests/e2e/permission-direct-access.spec.ts|docs/trialrun/permission-direct-access-audit.md|docs/trialrun/release-readiness-checklist.md|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv","[\"R2\"]","R3 已完成:新增权限直连 E2E 和审计记录;首次 E2E 因 127.0.0.1:3000 未启动失败,启动本地 OA 服务后重跑通过 10 passed;typecheck/build/CSV/diff check 通过;未发现权限泄漏,未改业务代码,R4 仍未执行。"
R4,部署预检,"检查生产/公网环境变量、数据库迁移状态、备份、回滚命令、Caddy/systemd 状态、/ready 和前端资源版本;未经批准不部署。","1) 生产环境变量缺项和敏感项不打印;2) 数据库迁移状态明确且有备份/回滚路径;3) Caddy/systemd 或既有部署方式健康;4) /ready 与前端资源版本可核对;5) 若需要修改生产配置,必须先获得确认。","流程级验证:只读检查部署目录、服务状态和 /ready;命令:node scripts/qa/check-live-smoke-env.mjs;命令:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;生产变更前必须停止等待批准。","ssh|bash|node|manual",DONE,DONE,DONE,"deploy/*|scripts/qa/*|docs/trialrun/release-readiness-checklist.md","[\"R3\"]","R4 完成:先发现远端运行时代码未对齐,后续按治理合同完成部署前备份、D3 受控同步和 D4 只读复检;远端关键运行时文件哈希已对齐,本机/公网 /ready 200,Prisma up to date,Caddy 正常,企业微信 config 不含 secret,公网 bundle 扫描 0 findings;R5 仍未执行。"
R5,公网企业微信和真实 OCR live smoke,"在 R4 预检通过且真实测试账号、企业微信配置和真实 OCR 样票齐备后,执行公网登录、企业微信入口、移动审批、报销/OCR 上传和通知 deeplink。","1) LIVE_SMOKE_* 从缺失变为可执行;2) 企业微信 config、OAuth 跳转和手机入口可验证;3) 真实 OCR 样票上传能进入可解释终态;4) 缺配置时继续 SKIP,不得宣称真机或真实 OCR 通过。","流程级验证:node scripts/qa/check-live-smoke-env.mjs --strict;命令:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;人工真机:手机企业微信工作台打开海音达工作台 -> deeplink 回 OA 审批或详情页 -> 记录结果。","node|bash|playwright|manual",DOING,TODO,TODO,"scripts/qa/*|docs/trialrun/live-smoke-readiness.md|docs/trialrun/real-device-public-checklist.md","[\"R4\"]","R5 smoke 密码重置合同 issues/2026-05-10_17-10-42-r5-smoke-password-reset-and-live-smoke.csv 已完成 K1-K5;SMOKE001/SMOKE002 已重置为仓库外安全凭据,登录标识按公网 auth 契约使用 smoke 邮箱;check-live-smoke-env --strict 通过;run-live-smoke-readiness.sh 通过,证据目录 artifacts/qa-flow/live-smoke-readiness-20260510-172421,公网 bundle findings=0,live smoke 3 passed,真实 OCR 样票不再 SKIP 且终态为重复发票/ocr_failed 可解释;pending OCR 辅助扫描因缺 DATABASE_URL 继续 SKIP;K4 审计 authSessions 555->572、auditLogs 258->263,发票/报销数量未新增;本轮 R5 真机反馈与正式运行口径代码收口已完成:issues/2026-05-10_17-47-39-r5-real-device-feedback-mobile-ux.csv M1-M5 DONE,后端禁止自审/admin-only 审批,移动底部 Tab 改为报销,头像中文首字;正式组织配置另拆 issues/2026-05-10_18-25-33-formal-approval-org-config.csv,O1-O3 仍为 TODO;企业微信真机正式链路验收尚未执行,且本轮未部署,所以主 R5 仍保持 DOING/TODO/TODO,R6 保持 TODO。"
R5,公网企业微信和真实 OCR live smoke,"在 R4 预检通过且真实测试账号、企业微信配置和真实 OCR 样票齐备后,执行公网登录、企业微信入口、移动审批、报销/OCR 上传和通知 deeplink。","1) LIVE_SMOKE_* 从缺失变为可执行;2) 企业微信 config、OAuth 跳转和手机入口可验证;3) 真实 OCR 样票上传能进入可解释终态;4) 缺配置时继续 SKIP,不得宣称真机或真实 OCR 通过。","流程级验证:node scripts/qa/check-live-smoke-env.mjs --strict;命令:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;人工真机:手机企业微信工作台打开海音达工作台 -> deeplink 回 OA 审批或详情页 -> 记录结果。","node|bash|playwright|manual",DOING,TODO,TODO,"scripts/qa/*|docs/trialrun/live-smoke-readiness.md|docs/trialrun/real-device-public-checklist.md","[\"R4\"]","R5 smoke 密码重置合同 issues/2026-05-10_17-10-42-r5-smoke-password-reset-and-live-smoke.csv 已完成 K1-K5;SMOKE001/SMOKE002 已重置为仓库外安全凭据,登录标识按公网 auth 契约使用 smoke 邮箱;check-live-smoke-env --strict 通过;run-live-smoke-readiness.sh 通过,证据目录 artifacts/qa-flow/live-smoke-readiness-20260510-172421,公网 bundle findings=0,live smoke 3 passed,真实 OCR 样票不再 SKIP 且终态为重复发票/ocr_failed 可解释;pending OCR 辅助扫描因缺 DATABASE_URL 继续 SKIP;K4 审计 authSessions 555->572、auditLogs 258->263,发票/报销数量未新增;本轮 R5 真机反馈与正式运行口径代码收口已完成:issues/2026-05-10_17-47-39-r5-real-device-feedback-mobile-ux.csv M1-M5 DONE,后端禁止自审/admin-only 审批,移动底部 Tab 改为报销,头像中文首字;审批规约与正式组织口径文档同步已完成:issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv G1-G5 DONE;正式组织配置仍待 issues/2026-05-10_18-25-33-formal-approval-org-config.csv O1-O3;企业微信真机正式链路验收尚未执行,且本轮未部署,所以主 R5 仍保持 DOING/TODO/TODO,R6 保持 TODO。"
R6,小范围试运行,"公网和真机 smoke 通过后,只开放 2-3 个内部用户按清单试运行报销、请假、采购、审批、企业微信移动入口、付款和导出;反馈转新 Issue。","1) 试运行名单、角色、时间窗口和回滚联系人明确;2) 员工提交、审批人审批、财务付款/导出、企业微信 deeplink 回 OA 均有记录;3) 每日问题只登记和分级,不现场扩大 P2 功能范围;4) 试运行结束形成继续/回滚/修复判断。","流程级验证:员工提交报销/请假/采购 -> 主管或财务审批 -> 财务付款或导出 -> 企业微信通知 deeplink 回 OA -> 管理员检查审计和状态;人工记录问题、截图和处理结论。","manual|playwright",TODO,TODO,TODO,"docs/trialrun/release-readiness-checklist.md|docs/trialrun/manual-trialrun-report.md|issues/*.csv","[\"R5\"]","小范围试运行前不得扩 P2 预算、ERP、AI、完整差旅、复杂 BPM;反馈必须进入新 Issue CSV。"
无法渲染此文件,因为它包含了意外字符,其位于第 2 行和第 616 列。
@@ -0,0 +1,6 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
G1,确认审批规约冲突和正式口径,"核对统一审批中心规约、产品口径、真机清单和 R5/O1-O3 合同,将正式运行审批组织口径作为本轮文档治理基线。","1) 明确 majianyong=manager;2) 明确 wangshunli=ceo+admin 且不配置普通 manager;3) 明确 admin 不代表业务审批权;4) 明确缺直属主管应阻断而非无条件升级 CEO;5) 本轮不改业务代码、不部署、不改远端数据。","流程级验证:阅读 docs/需求-统一审批中心规约.md、docs/product-decisions.md、docs/trialrun/real-device-public-checklist.md、issues/2026-05-10_18-25-33-formal-approval-org-config.csv;确认冲突点和正式口径记录在本 CSV。","rg|manual",DONE,DONE,DONE,"docs/需求-统一审批中心规约.md|docs/product-decisions.md|docs/trialrun/real-device-public-checklist.md|issues/2026-05-10_18-25-33-formal-approval-org-config.csv","[]","已确认正式口径并修正事实源冲突;回滚路径:回退本轮文档与 CSV 提交;不涉及数据修复。"
G2,更新统一审批中心规约,"将正式审批组织、角色边界、自审禁止、缺主管阻断和 CEO 本人单据处理规则写入统一审批中心规约。","1) 规约版本升到 1.1;2) 新增正式组织与角色映射;3) HR/行政与系统管理员边界清晰;4) 自审禁止覆盖申请人、实际报销人、提交人、请假人、采购/差旅申请人;5) CEO 本人单据不得自审。","流程级验证:rg -n ""正式审批组织|majianyong|wangshunli|自审|缺直属主管|admin"" docs/需求-统一审批中心规约.md;人工核对角色、规则矩阵和验收场景一致。","rg|manual",DONE,DONE,DONE,"docs/需求-统一审批中心规约.md","[""G1""]","统一审批中心规约已升至 1.1;不新增状态枚举或接口;本轮只修事实源。"
G3,更新产品口径管理员手册和设计规则,"修正 product-decisions 中无直接经理升级 CEO 的冲突口径,并同步管理员正式组织配置步骤、移动底部 Tab、深层页和头像规则。","1) product-decisions 不再写无主管无条件升级 CEO;2) admin-handbook 包含正式组织配置和 smoke 账号纪律;3) product-design-rules 固定移动底部 Tab、票据上传入口、深层页导航和头像 fallback。","流程级验证:rg -n ""无直接经理|CEO|正式组织|底部导航|票据上传|头像|深层页"" docs/product-decisions.md docs/admin-handbook.md docs/product-design-rules.md。","rg|manual",DONE,DONE,DONE,"docs/product-decisions.md|docs/admin-handbook.md|docs/product-design-rules.md","[""G2""]","已同步正式组织配置和已实现的移动交互口径,不新增 UI 工作。"
G4,更新真机清单和业务规约引用,"把真机审批验收改为可勾选矩阵,并在报销/采购规约补充统一审批中心角色口径引用。","1) 真机清单能记录账号角色、直属上级、提交人、期望审批人、结果和截图位置;2) 报销规约引用统一审批中心作为审批链和角色口径事实源;3) 采购规约中申请人是主管时升级口径与统一审批中心一致。","流程级验证:rg -n ""正式审批链验收矩阵|统一审批中心规约|自审|非本人兜底|manager|ceo|admin"" docs/trialrun/real-device-public-checklist.md docs/需求-报销发票OCR规约.md docs/需求-采购费用审批规约.md。","rg|manual",DONE,DONE,DONE,"docs/trialrun/real-device-public-checklist.md|docs/需求-报销发票OCR规约.md|docs/需求-采购费用审批规约.md","[""G2""]","已补引用,不重复完整审批规则,避免多事实源漂移。"
G5,校验文档CSV和提交,"校验新合同、主 R5 合同、文档一致性和格式,回填状态并提交本轮文档治理。","1) 新 CSV 和主 R5 CSV 校验通过;2) 文档一致性搜索无未标注冲突;3) git diff --check 通过;4) 主 R5 Notes 记录文档口径已同步但 R5 未完成;5) commit 完成。","命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;命令:rg -n ""无直接经理|升级给.*CEO|admin.*审批|系统管理员|majianyong|wangshunli|底部导航|票据|头像|自审"" docs issues;命令:git diff --check。","python3|rg|git",DONE,DONE,DONE,"issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv","[""G2"",""G3"",""G4""]","CSV 校验、文档一致性搜索和 git diff --check 已执行;提交信息:G1-G5 同步正式审批组织与移动交互规约。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 G1 确认审批规约冲突和正式口径 核对统一审批中心规约、产品口径、真机清单和 R5/O1-O3 合同,将正式运行审批组织口径作为本轮文档治理基线。 1) 明确 majianyong=manager;2) 明确 wangshunli=ceo+admin 且不配置普通 manager;3) 明确 admin 不代表业务审批权;4) 明确缺直属主管应阻断而非无条件升级 CEO;5) 本轮不改业务代码、不部署、不改远端数据。 流程级验证:阅读 docs/需求-统一审批中心规约.md、docs/product-decisions.md、docs/trialrun/real-device-public-checklist.md、issues/2026-05-10_18-25-33-formal-approval-org-config.csv;确认冲突点和正式口径记录在本 CSV。 rg|manual DONE DONE DONE docs/需求-统一审批中心规约.md|docs/product-decisions.md|docs/trialrun/real-device-public-checklist.md|issues/2026-05-10_18-25-33-formal-approval-org-config.csv [] 已确认正式口径并修正事实源冲突;回滚路径:回退本轮文档与 CSV 提交;不涉及数据修复。
3 G2 更新统一审批中心规约 将正式审批组织、角色边界、自审禁止、缺主管阻断和 CEO 本人单据处理规则写入统一审批中心规约。 1) 规约版本升到 1.1;2) 新增正式组织与角色映射;3) HR/行政与系统管理员边界清晰;4) 自审禁止覆盖申请人、实际报销人、提交人、请假人、采购/差旅申请人;5) CEO 本人单据不得自审。 流程级验证:rg -n "正式审批组织|majianyong|wangshunli|自审|缺直属主管|admin" docs/需求-统一审批中心规约.md;人工核对角色、规则矩阵和验收场景一致。 rg|manual DONE DONE DONE docs/需求-统一审批中心规约.md ["G1"] 统一审批中心规约已升至 1.1;不新增状态枚举或接口;本轮只修事实源。
4 G3 更新产品口径管理员手册和设计规则 修正 product-decisions 中无直接经理升级 CEO 的冲突口径,并同步管理员正式组织配置步骤、移动底部 Tab、深层页和头像规则。 1) product-decisions 不再写无主管无条件升级 CEO;2) admin-handbook 包含正式组织配置和 smoke 账号纪律;3) product-design-rules 固定移动底部 Tab、票据上传入口、深层页导航和头像 fallback。 流程级验证:rg -n "无直接经理|CEO|正式组织|底部导航|票据上传|头像|深层页" docs/product-decisions.md docs/admin-handbook.md docs/product-design-rules.md。 rg|manual DONE DONE DONE docs/product-decisions.md|docs/admin-handbook.md|docs/product-design-rules.md ["G2"] 已同步正式组织配置和已实现的移动交互口径,不新增 UI 工作。
5 G4 更新真机清单和业务规约引用 把真机审批验收改为可勾选矩阵,并在报销/采购规约补充统一审批中心角色口径引用。 1) 真机清单能记录账号角色、直属上级、提交人、期望审批人、结果和截图位置;2) 报销规约引用统一审批中心作为审批链和角色口径事实源;3) 采购规约中申请人是主管时升级口径与统一审批中心一致。 流程级验证:rg -n "正式审批链验收矩阵|统一审批中心规约|自审|非本人兜底|manager|ceo|admin" docs/trialrun/real-device-public-checklist.md docs/需求-报销发票OCR规约.md docs/需求-采购费用审批规约.md。 rg|manual DONE DONE DONE docs/trialrun/real-device-public-checklist.md|docs/需求-报销发票OCR规约.md|docs/需求-采购费用审批规约.md ["G2"] 已补引用,不重复完整审批规则,避免多事实源漂移。
6 G5 校验文档CSV和提交 校验新合同、主 R5 合同、文档一致性和格式,回填状态并提交本轮文档治理。 1) 新 CSV 和主 R5 CSV 校验通过;2) 文档一致性搜索无未标注冲突;3) git diff --check 通过;4) 主 R5 Notes 记录文档口径已同步但 R5 未完成;5) commit 完成。 命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv;命令:rg -n "无直接经理|升级给.*CEO|admin.*审批|系统管理员|majianyong|wangshunli|底部导航|票据|头像|自审" docs issues;命令:git diff --check。 python3|rg|git DONE DONE DONE issues/2026-05-10_19-24-06-approval-governance-doc-sync.csv|issues/2026-05-10_12-39-37-release-readiness-live-smoke.csv ["G2","G3","G4"] CSV 校验、文档一致性搜索和 git diff --check 已执行;提交信息:G1-G5 同步正式审批组织与移动交互规约。