QAOPS9 P2D 细化实施准备
这个提交包含在:
+3
-3
@@ -15,7 +15,7 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
|
|||||||
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成;R7E 已于 2026-05-15 23:35 CST 由用户确认阶段验收通过,并于 2026-05-16 完成 R7E-19/R7E-20 和 QAOPS8-19/QAOPS8-20 阶段收口。
|
- R7/OPS7/DOC7 是准备材料;R7EP 自动门禁和 OPS8 只读检查已完成;R7E 已于 2026-05-15 23:35 CST 由用户确认阶段验收通过,并于 2026-05-16 完成 R7E-19/R7E-20 和 QAOPS8-19/QAOPS8-20 阶段收口。
|
||||||
- 2026-05-13 后续计划调整直接回写现有 R7EP、OPS8、QAF8、UX8、P2T 合同,不新建专门调整 Issue;调整后 R7EP 门禁可并行执行,OPS8-1/2/4 纳入 R7EP Go/No-Go,UX8 和 P2T 候选按真实反馈并行推进。
|
- 2026-05-13 后续计划调整直接回写现有 R7EP、OPS8、QAF8、UX8、P2T 合同,不新建专门调整 Issue;调整后 R7EP 门禁可并行执行,OPS8-1/2/4 纳入 R7EP Go/No-Go,UX8 和 P2T 候选按真实反馈并行推进。
|
||||||
- ORG8 组织账号与权限主数据已完成本地代表性角色验收和阶段收口;后续组织主数据治理只作为 P2 只读巡检候选,不自动进入写修复。
|
- ORG8 组织账号与权限主数据已完成本地代表性角色验收和阶段收口;后续组织主数据治理只作为 P2 只读巡检候选,不自动进入写修复。
|
||||||
- 2026-05-16 已建立 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;本次只新增 Issue CSV 和既有事实源登记,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
|
- 2026-05-16 已建立并细化 QAOPS9 上线硬化连续合同和 P2D 功能决策合同;QAOPS9 固定隔离本地业务流与公网 flag-off 证据分离,P2D 固定 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 三类结论;本次只更新 Issue CSV、既有事实源和 QA 脚本过滤参数,未改业务代码、API/schema、feature flag 或前端功能,未部署,公网运行状态不变。
|
||||||
|
|
||||||
## 关键证据索引
|
## 关键证据索引
|
||||||
|
|
||||||
@@ -38,8 +38,8 @@ DCL7 已删除本文件中 R70-R91 的长流水历史,避免旧环境、旧开
|
|||||||
| R7E | 阶段验收和 P2 排序收口已完成;当前 P0/P1 阻断为 0 | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` |
|
| R7E | 阶段验收和 P2 排序收口已完成;当前 P0/P1 阻断为 0 | `issues/2026-05-13_17-11-44-r7e-human-trialrun.csv` |
|
||||||
| QAOPS8 | Go/No-Go 与上线硬化阶段收口已完成;后续建议另起 QAOPS9 或等价连续合同 | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` |
|
| QAOPS8 | Go/No-Go 与上线硬化阶段收口已完成;后续建议另起 QAOPS9 或等价连续合同 | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` |
|
||||||
| FBA | R7E 后全端功能边界审计已收口;只作为功能边界和 P2 候选证据 | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv`、`docs/trialrun/R7E后功能边界审计.md` |
|
| FBA | R7E 后全端功能边界审计已收口;只作为功能边界和 P2 候选证据 | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv`、`docs/trialrun/R7E后功能边界审计.md` |
|
||||||
| QAOPS9 | 当前已建档待执行;上线硬化优先,覆盖公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强 | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` |
|
| QAOPS9 | 当前已建档并完成执行边界细化;上线硬化优先,隔离本地业务流与公网 flag-off 证据分离,覆盖公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强 | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` |
|
||||||
| P2D | 当前已建档待执行;只做 P2 功能进入开发前的决策和分流 | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` |
|
| P2D | 当前已建档并完成决策模板细化;只做 P2 功能进入开发前的决策和分流,结论统一为 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ` 或 `FREEZE` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` |
|
||||||
|
|
||||||
## 当前门禁
|
## 当前门禁
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -4,7 +4,7 @@
|
|||||||
**分类**:文档台账。
|
**分类**:文档台账。
|
||||||
**适用时间**:DCL7 之后。
|
**适用时间**:DCL7 之后。
|
||||||
**关联 Issue**:`GOV8`。
|
**关联 Issue**:`GOV8`。
|
||||||
**最近审计**:2026-05-13。
|
**最近审计**:2026-05-16。
|
||||||
**不得误读**:本文登记文档权威性和状态,不替代具体 PRD、模块规约、测试规约或 Issue CSV。
|
**不得误读**:本文登记文档权威性和状态,不替代具体 PRD、模块规约、测试规约或 Issue CSV。
|
||||||
**治理口径**:中文优先,物理精简,优先复用已有文档。历史资料不建 `docs/archive/`,已确认不用的文档从当前树移除,通过 git 历史恢复。
|
**治理口径**:中文优先,物理精简,优先复用已有文档。历史资料不建 `docs/archive/`,已确认不用的文档从当前树移除,通过 git 历史恢复。
|
||||||
|
|
||||||
@@ -36,8 +36,8 @@
|
|||||||
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | `EVIDENCE` | 报销/OCR/财务/项目轻量增强已阶段收口;财务移动入口真机通过,财务/项目权限回归完成,付款批次延期到 P2 |
|
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | `EVIDENCE` | 报销/OCR/财务/项目轻量增强已阶段收口;财务移动入口真机通过,财务/项目权限回归完成,付款批次延期到 P2 |
|
||||||
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | `EVIDENCE` | Go/No-Go 与上线硬化阶段收口已完成;后续硬化另起 QAOPS9 或等价连续合同 |
|
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | `EVIDENCE` | Go/No-Go 与上线硬化阶段收口已完成;后续硬化另起 QAOPS9 或等价连续合同 |
|
||||||
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | `EVIDENCE` | R7E 后全端功能边界审计和后续 Issue 草案;不启动 P2 功能开发 |
|
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | `EVIDENCE` | R7E 后全端功能边界审计和后续 Issue 草案;不启动 P2 功能开发 |
|
||||||
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | `CURRENT` | R7E 后上线硬化连续合同;优先处理公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强 |
|
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | `CURRENT` | R7E 后上线硬化连续合同;隔离本地业务流与公网 flag-off 证据分离,优先处理测试数据、live smoke、恢复演练 dry-run 和 SLO/Go-No-Go |
|
||||||
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | `CURRENT` | P2 功能决策合同;只做组织主数据、付款批次、图片 OCR、UX8、审批通知和轻业务增强是否进入开发的决策 |
|
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | `CURRENT` | P2 功能决策合同;使用 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 决定组织主数据、付款批次、图片 OCR、UX8、审批通知和轻业务增强是否进入开发 |
|
||||||
|
|
||||||
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
|
旧 Issue CSV 保留为历史审计证据:不删除、不批量回写、不移动到 `docs/archive/` 或其他归档目录。新连续合同如替代旧合同,只在新合同 `Notes` 或文档索引中说明 supersedes。
|
||||||
|
|
||||||
@@ -45,8 +45,8 @@
|
|||||||
|
|
||||||
| Doc_ID | Path | Category | Authority | Status | Owner | Related_Issues | Evidence | Supersedes | Last_Audited | Audit_Method | Risk | Notes |
|
| Doc_ID | Path | Category | Authority | Status | Owner | Related_Issues | Evidence | Supersedes | Last_Audited | Audit_Method | Risk | Notes |
|
||||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8` | `rg` | none | 2026-05-13 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么 |
|
| `IDX` | `docs/文档索引.md` | 入口索引 | 最高文档入口 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D` | `rg` | none | 2026-05-16 | `node scripts/qa/audit-docs.mjs --check-registry` | medium | 判断当前该读什么 |
|
||||||
| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8` | `audit-docs` | none | 2026-05-13 | `audit-docs --check-registry` | medium | 判断文档权威性 |
|
| `REG` | `docs/文档事实源状态矩阵.md` | 文档台账 | 文档分类和状态事实源 | `CURRENT` | product/dev | `GOV8,QAOPS9,P2D` | `audit-docs` | none | 2026-05-16 | `audit-docs --check-registry` | medium | 判断文档权威性 |
|
||||||
| `PRD-MVP` | `docs/海音达OA-MVP需求规格说明书.md` | 需求事实源 | PRD 主事实源 | `CURRENT` | product | `REQ8,P2T,GOV8` | Issue CSV | `docs/requirements-specification.md` | 2026-05-13 | `rg` | high | 定义做什么、不做什么和验收口径 |
|
| `PRD-MVP` | `docs/海音达OA-MVP需求规格说明书.md` | 需求事实源 | PRD 主事实源 | `CURRENT` | product | `REQ8,P2T,GOV8` | Issue CSV | `docs/requirements-specification.md` | 2026-05-13 | `rg` | high | 定义做什么、不做什么和验收口径 |
|
||||||
| `PRODUCT-SCOPE` | `docs/产品口径.md` | 需求事实源 | 产品边界事实源 | `CURRENT` | product | `REQ8,P2T` | `rg` | none | 2026-05-13 | `rg` | high | 记录已拍板产品边界 |
|
| `PRODUCT-SCOPE` | `docs/产品口径.md` | 需求事实源 | 产品边界事实源 | `CURRENT` | product | `REQ8,P2T` | `rg` | none | 2026-05-13 | `rg` | high | 记录已拍板产品边界 |
|
||||||
| `DESIGN-UI` | `docs/产品设计规则.md` | 设计事实源 | PC/移动/企业微信设计事实源 | `CURRENT` | design/frontend | `MIA7,MIF7,GOV8,DG8,DG9` | Playwright/视觉审查/DG8/DG9 | none | 2026-05-13 | `rg` | high | 页面改动必须读取;DG8 后飞书为主 UI/布局参考;DG9 后按页面分层和样板选型 |
|
| `DESIGN-UI` | `docs/产品设计规则.md` | 设计事实源 | PC/移动/企业微信设计事实源 | `CURRENT` | design/frontend | `MIA7,MIF7,GOV8,DG8,DG9` | Playwright/视觉审查/DG8/DG9 | none | 2026-05-13 | `rg` | high | 页面改动必须读取;DG8 后飞书为主 UI/布局参考;DG9 后按页面分层和样板选型 |
|
||||||
|
|||||||
+5
-5
@@ -4,7 +4,7 @@
|
|||||||
**分类**:入口索引。
|
**分类**:入口索引。
|
||||||
**适用时间**:DCL7 之后。
|
**适用时间**:DCL7 之后。
|
||||||
**关联 Issue**:`GOV8`。
|
**关联 Issue**:`GOV8`。
|
||||||
**最近审计**:2026-05-13。
|
**最近审计**:2026-05-16。
|
||||||
**不得误读**:本文只指示当前事实源和读取顺序;历史 Issue CSV 只能用于追溯,不直接生成新开发任务。
|
**不得误读**:本文只指示当前事实源和读取顺序;历史 Issue CSV 只能用于追溯,不直接生成新开发任务。
|
||||||
**治理口径**:中文优先,物理精简,优先复用已有文档。已确认不用的历史文档不放 `docs/archive/`,直接从当前工作树移除;需要时从 git 历史恢复。
|
**治理口径**:中文优先,物理精简,优先复用已有文档。已确认不用的历史文档不放 `docs/archive/`,直接从当前工作树移除;需要时从 git 历史恢复。
|
||||||
|
|
||||||
@@ -30,8 +30,8 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
|
|||||||
- DG9 承接 DG8 后的页面整改:按 A/B/C 页面分层和 DG9 样板统一 PC、移动和企业微信入口布局;最新代码已作为 R7E 试运行基线部署到公网,不替代 WF8、UX8 或 BIZ8 业务验收。
|
- DG9 承接 DG8 后的页面整改:按 A/B/C 页面分层和 DG9 样板统一 PC、移动和企业微信入口布局;最新代码已作为 R7E 试运行基线部署到公网,不替代 WF8、UX8 或 BIZ8 业务验收。
|
||||||
- R7E 阶段验收、P2 排序和 QAOPS8 上线硬化阶段收口已完成,当前 P0/P1 阻断为 0;后续 P2 功能开发必须另建或延续对应连续合同。
|
- R7E 阶段验收、P2 排序和 QAOPS8 上线硬化阶段收口已完成,当前 P0/P1 阻断为 0;后续 P2 功能开发必须另建或延续对应连续合同。
|
||||||
- FBA 是 R7E 后全端功能边界审计,只提供证据和 Issue 草案,不启动 P2 功能开发。
|
- FBA 是 R7E 后全端功能边界审计,只提供证据和 Issue 草案,不启动 P2 功能开发。
|
||||||
- QAOPS9 是 R7E 后上线硬化连续合同,优先处理公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强;不部署、不执行生产恢复、不重置数据库、不打印远端 env。
|
- QAOPS9 是 R7E 后上线硬化连续合同,优先处理公网业务流测试数据、live smoke 账号链路、恢复演练 dry-run 和 SLO/Go-No-Go 自动化增强;隔离本地业务流可使用临时库和测试开关,公网证据必须保持 flag-off 或 SKIP 可解释;不部署、不执行生产恢复、不重置数据库、不打印远端 env。
|
||||||
- P2D 是 P2 功能决策合同,只决定组织主数据、付款批次、图片 OCR、UX8、审批通知和轻业务增强是否进入独立开发合同;不新增 API/schema、feature flag 或前端功能。
|
- P2D 是 P2 功能决策合同,只决定组织主数据、付款批次、图片 OCR、UX8、审批通知和轻业务增强是否进入独立开发合同;统一使用 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` 三类结论,不新增 API/schema、feature flag 或前端功能。
|
||||||
|
|
||||||
## 当前活跃治理流
|
## 当前活跃治理流
|
||||||
|
|
||||||
@@ -48,8 +48,8 @@ R6 -> PC6 -> PA6 -> FL6 -> AP6 -> RI6 -> LP6 -> ME6/QG6 -> DG7/MRF7 -> MIA7 -> M
|
|||||||
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | 已收口:财务移动入口真机通过,财务/项目权限回归完成 | OCR、票据、财务、费用提示、项目关联 | 不做 ERP 实时集成或重预算;付款批次延期到 P2 |
|
| `BIZ8` | `issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv` | 已收口:财务移动入口真机通过,财务/项目权限回归完成 | OCR、票据、财务、费用提示、项目关联 | 不做 ERP 实时集成或重预算;付款批次延期到 P2 |
|
||||||
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | 已收口:Go/No-Go 与上线硬化阶段分流完成 | 回归稳定、测试覆盖、上线门禁、备份恢复、SLO | 不改业务需求;后续硬化另起 QAOPS9 或等价连续合同 |
|
| `QAOPS8` | `issues/2026-05-13_17-30-00-qaops8-test-release-ops.csv` | 已收口:Go/No-Go 与上线硬化阶段分流完成 | 回归稳定、测试覆盖、上线门禁、备份恢复、SLO | 不改业务需求;后续硬化另起 QAOPS9 或等价连续合同 |
|
||||||
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | 已收口:R7E 后全端功能边界审计和后续 Issue 草案 | PC、移动/企业微信、后端 API/作业、管理/运维边界审计 | 不改业务代码、不改 API/schema、不部署、不启动 P2 |
|
| `FBA` | `issues/2026-05-15_23-45-41-r7e-post-function-boundary-audit.csv` | 已收口:R7E 后全端功能边界审计和后续 Issue 草案 | PC、移动/企业微信、后端 API/作业、管理/运维边界审计 | 不改业务代码、不改 API/schema、不部署、不启动 P2 |
|
||||||
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | 当前合同:已建档,待执行上线硬化 | 公网业务流测试数据稳定化、live smoke 账号链路、恢复演练 dry-run、SLO/Go-No-Go 自动化增强 | 不改业务需求、不部署、不执行生产恢复、不重置数据库、不打印远端 env |
|
| `QAOPS9` | `issues/2026-05-16_00-19-20-qaops9-release-hardening.csv` | 当前合同:已建档,待执行上线硬化 | 公网业务流测试数据稳定化、live smoke 账号链路、恢复演练 dry-run、SLO/Go-No-Go 自动化增强;隔离业务流与公网 flag-off 证据分离 | 不改业务需求、不部署、不执行生产恢复、不重置数据库、不打印远端 env |
|
||||||
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | 当前合同:已建档,待执行 P2 决策 | 组织主数据、付款批次、图片 OCR、UX8、审批通知、轻业务增强的进入开发决策 | 不新增 API/schema/feature flag/UI;不启用付款批次或图片 OCR |
|
| `P2D` | `issues/2026-05-16_00-19-21-p2-decision-followup.csv` | 当前合同:已建档,待执行 P2 决策 | 组织主数据、付款批次、图片 OCR、UX8、审批通知、轻业务增强的进入开发决策;结论使用 `GO_TO_CONTRACT`、`HOLD_FOR_PREREQ`、`FREEZE` | 不新增 API/schema/feature flag/UI;不启用付款批次或图片 OCR |
|
||||||
|
|
||||||
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
|
旧 Issue CSV 不删除、不批量回写、不移动到归档目录。若新治理流替代旧合同,只在新 CSV 的 `Notes` 或本索引说明 supersedes,旧文件保留历史审计语义。
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||||||
"QAOPS9-0","QAOPS9 连续合同建档","建立 R7E 后上线硬化连续合同,承接 QAOPS8 收口后的公网业务流测试数据、live smoke 账号链路、恢复演练窗口和 SLO/Go-No-Go 自动化增强;本合同只规划和硬化,不改业务需求。","1) CSV 校验通过;2) 文档索引和事实源矩阵登记 QAOPS9;3) 不修改 server/src 或 client/src 业务代码;4) 不部署、不执行生产恢复、不重置数据库、不打印远端 env。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_00-19-20-qaops9-release-hardening.csv;node scripts/qa/audit-docs.mjs --check-registry;git diff --check;人工核对 git diff 仅包含 issues/docs。","python3|node|git|manual","DONE","DONE","DONE","issues/2026-05-16_00-19-20-qaops9-release-hardening.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[]","2026-05-16 建档;承接 QAOPS8-19/20 和 FBA 建议;回滚路径为删除本 CSV 与本轮索引登记;不影响运行环境。"
|
"QAOPS9-0","QAOPS9 连续合同建档","建立 R7E 后上线硬化连续合同,承接 QAOPS8 收口后的公网业务流测试数据、live smoke 账号链路、恢复演练窗口和 SLO/Go-No-Go 自动化增强;本合同只规划和硬化,不改业务需求。","1) CSV 校验通过;2) 文档索引和事实源矩阵登记 QAOPS9;3) 不修改 server/src 或 client/src 业务代码;4) 允许仅为门禁安全补 scripts/qa 过滤能力;5) 不部署、不执行生产恢复、不重置数据库、不打印远端 env。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_00-19-20-qaops9-release-hardening.csv;node scripts/qa/audit-docs.mjs --check-registry;git diff --check;人工核对 git diff 仅包含 issues/docs/scripts/qa。","python3|node|git|manual","DONE","DONE","DONE","issues/2026-05-16_00-19-20-qaops9-release-hardening.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md|scripts/qa/run-business-flow-gates.sh","[]","2026-05-16 建档并二次细化;承接 QAOPS8-19/20 和 FBA 建议;回滚路径为回退本 CSV、索引登记和脚本过滤参数;不影响运行环境。"
|
||||||
"QAOPS9-1","公网业务流测试数据稳定化","把 R7E 暴露的本地旧种子账号和公网真实 smoke 账号链路差异收敛为可复跑测试数据方案,覆盖报销、审批、请假、采购、财务只读确认和权限边界。","1) 明确公网业务流推荐账号链路;2) 旧本地种子失败项不误判为产品失败;3) 测试数据准备步骤可复现;4) 失败时能区分账号、权限、数据和产品缺陷。","受影响流程:员工提交报销、请假、采购后由审批人处理,财务只读查看已审批报销且 payment_batch_v1 仍关闭;验证步骤:在隔离或可控试运行数据集执行核心业务流脚本并核对 summary;缺凭据时记录 SKIP 而非 PASS。","bash|manual","TODO","TODO","TODO","scripts/qa/run-business-flow-gates.sh|artifacts/qa-flow|docs/trialrun/人工试运行报告.md","[""QAOPS9-0""]","不得重置生产数据库;不得用重试替代缺陷分析;如需写测试数据必须在隔离或批准的试运行窗口执行。"
|
"QAOPS9-1","公网业务流测试数据稳定化","把 R7E 暴露的本地旧种子账号和公网真实 smoke 账号链路差异收敛为可复跑测试数据方案,覆盖报销、审批、请假、采购、财务只读确认和权限边界。","1) 明确公网业务流推荐账号链路;2) 旧本地种子失败项不误判为产品失败;3) 隔离本地可变更测试和公网 flag-off 证据分离;4) 失败时能区分账号、权限、数据和产品缺陷。","受影响流程:员工提交报销、请假、采购后由审批人处理,财务只读查看已审批报销且 payment_batch_v1 仍关闭;验证步骤:先用 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs --json 只读核对前置;再在隔离临时库执行 BUSINESS_FLOW_GROUPS=reimbursement,approval,leave,procurement,governance BUSINESS_FLOW_EXCLUDE_SPECS=tests/e2e/reimbursement-payment-batch-flow.spec.ts bash scripts/qa/run-business-flow-gates.sh local 并核对 summary;公网付款批次仍只能以 flag_force_off 或 payment_batch_v1_disabled 作为关闭证据。","bash|node|manual","TODO","TODO","TODO","scripts/qa/run-business-flow-gates.sh|scripts/qa/check-live-smoke-env.mjs|artifacts/qa-flow|docs/trialrun/人工试运行报告.md","[""QAOPS9-0""]","不得重置生产数据库;不得用重试替代缺陷分析;reimbursement-payment-batch-flow.spec.ts 会开启 payment_batch_v1,只能用于隔离功能回归,不能作为公网 flag-off 通过证据。"
|
||||||
"QAOPS9-2","live smoke 账号链路校准","校准 live smoke 账号、角色、直属主管、企业微信绑定和真实 OCR 样票前置,避免凭据缺失或账号链路漂移导致公网门禁不可解释。","1) live smoke 所需账号和角色矩阵清楚;2) 凭据缺失只记录 SKIP;3) 不打印 token、密码、cookie 或远端 env;4) 企业微信入口、deeplink 和真实 OCR 前置条件分离。","受影响流程:员工、审批人、财务和管理员通过公网入口完成登录、待办、通知 deeplink 和 OCR readiness 检查;验证步骤:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com QA_ISSUE_ID=QAOPS9 bash scripts/qa/run-live-smoke-readiness.sh;缺正式凭据或授权样票时按脚本规则记录 SKIP。","bash|manual","TODO","TODO","TODO","scripts/qa/run-live-smoke-readiness.sh|scripts/qa/check-live-smoke-env.mjs|docs/trialrun/公网LiveSmoke准备清单.md","[""QAOPS9-0""]","只记录摘要和证据路径;不得泄露密钥或个人隐私;无授权图片样票时图片 OCR 不计 PASS。"
|
"QAOPS9-2","live smoke 账号链路校准","校准 live smoke 账号、角色、直属主管、企业微信绑定和真实 OCR 样票前置,避免凭据缺失或账号链路漂移导致公网门禁不可解释。","1) live smoke 所需账号和角色矩阵清楚;2) 凭据缺失只记录 SKIP;3) 不打印 token、密码、cookie 或远端 env;4) 企业微信入口、deeplink、PDF OCR 和图片 OCR 前置条件分离。","受影响流程:员工、审批人、财务和管理员通过公网入口完成登录、待办、通知 deeplink 和 OCR readiness 检查;验证步骤:LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs --json 生成前置摘要;如具备凭据和 PDF 样票,再执行 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com QA_ISSUE_ID=QAOPS9 bash scripts/qa/run-live-smoke-readiness.sh;缺正式凭据、DATABASE_URL、授权 PDF 样票或授权图片样票时按脚本规则记录 SKIP,不回填 DONE。","bash|node|manual","TODO","TODO","TODO","scripts/qa/run-live-smoke-readiness.sh|scripts/qa/check-live-smoke-env.mjs|docs/trialrun/公网LiveSmoke准备清单.md","[""QAOPS9-0""]","只记录摘要和证据路径;不得泄露密钥或个人隐私;当前 live OCR 基线仍是 PDF-only,无授权图片样票时图片 OCR 不计 PASS。"
|
||||||
"QAOPS9-3","恢复演练窗口与 dry-run 设计","把 QAOPS8 的恢复演练准备推进为可执行 dry-run 方案,先限定非生产或隔离环境,明确窗口、责任人、备份核验、恢复验证和停止条件。","1) 恢复演练范围、窗口和负责人明确;2) 演练优先非生产或隔离环境;3) 生产只做只读预检或步骤复盘;4) 未获单独批准不得执行生产恢复或服务切换。","受影响流程:备份清单核对、隔离库恢复、/ready、登录和核心业务只读验证;验证步骤:人工核对 OPS7 Runbook 和 QAOPS9 dry-run checklist,若执行则在非生产环境记录命令摘要和验证截图路径。","manual|rg","TODO","TODO","TODO","docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md|artifacts/qa-flow","[""QAOPS9-0""]","禁止生产恢复、重置数据库、覆盖远端 env 或破坏性命令;真实恢复必须另获批准并记录回滚责任人。"
|
"QAOPS9-3","恢复演练窗口与 dry-run 设计","把 QAOPS8 的恢复演练准备推进为可执行 dry-run 方案,先限定非生产或隔离环境,明确窗口、责任人、备份核验、恢复验证和停止条件。","1) 恢复演练范围、窗口和负责人明确;2) 演练优先非生产或隔离环境;3) 生产只做只读预检或步骤复盘;4) 未获单独批准不得执行生产恢复或服务切换。","受影响流程:备份清单核对、隔离库恢复、/ready、登录和核心业务只读验证;验证步骤:rg -n '备份|恢复演练|RTO|RPO|停止条件|生产恢复|migrate reset|SYNC_ENV' docs/trialrun/OPS7运维交接Runbook.md docs/ops/非功能基线.md;人工形成 dry-run checklist,若执行恢复只能在非生产或隔离环境记录命令摘要、RTO/RPO 实测和验证截图路径。","manual|rg","TODO","TODO","TODO","docs/trialrun/OPS7运维交接Runbook.md|docs/ops/非功能基线.md|artifacts/qa-flow","[""QAOPS9-0""]","禁止生产恢复、重置数据库、覆盖远端 env 或破坏性命令;真实恢复必须另获批准并记录回滚责任人。"
|
||||||
"QAOPS9-4","SLO 与 Go-No-Go 自动化增强","增强上线或扩大试运行前的 SLO、错误预算和 Go/No-Go 自动化汇总,形成可复跑、可审计的门禁结果。","1) /ready、public bundle、live smoke、核心业务流和移动矩阵状态能汇总;2) Go、Pause、No-Go 条件清楚;3) SKIP 不被写成 PASS;4) 输出可关联 Issue 和证据路径。","受影响流程:上线前门禁汇总覆盖匿名健康、带凭据业务流、移动矩阵和人工真机结论;验证步骤:curl /ready、PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs、live readiness、移动矩阵和人工 Go/No-Go 清单交叉核对。","curl|node|bash|playwright|manual","TODO","TODO","TODO","scripts/qa|docs/ops/SLO错误预算.md|docs/trialrun/发布试运行准备清单.md","[""QAOPS9-1"",""QAOPS9-2""]","可改脚本或文档时需另列实现方案;本建档轮不新增自动化代码。"
|
"QAOPS9-4","SLO 与 Go-No-Go 自动化增强","增强上线或扩大试运行前的 SLO、错误预算和 Go/No-Go 自动化汇总,形成可复跑、可审计的门禁结果。","1) /ready、public bundle、live smoke、核心业务流和移动矩阵状态能汇总;2) Go、Pause、No-Go 条件清楚;3) SKIP 不被写成 PASS;4) 输出可关联 Issue 和证据路径。","受影响流程:上线前门禁汇总覆盖匿名健康、带凭据业务流、移动矩阵和人工真机结论;验证步骤:curl -fsS https://oa.hyinda.com/ready;PUBLIC_BASE_URL=https://oa.hyinda.com node scripts/qa/check-public-bundle-copy.mjs;LIVE_SMOKE_BASE_URL=https://oa.hyinda.com QA_ISSUE_ID=QAOPS9 bash scripts/qa/run-live-smoke-readiness.sh;隔离业务流使用 BUSINESS_FLOW_EXCLUDE_SPECS=tests/e2e/reimbursement-payment-batch-flow.spec.ts;移动矩阵按 DG7/R124 或当前试运行手册指定用例执行;人工汇总 Go/Pause/No-Go,SKIP 不计 PASS。","curl|node|bash|playwright|manual","TODO","TODO","TODO","scripts/qa|docs/ops/SLO错误预算.md|docs/trialrun/发布试运行准备清单.md","[""QAOPS9-1"",""QAOPS9-2""]","可改脚本或文档时需另列实现方案;付款批次仍关闭时,不得把隔离打开 flag 的测试结果写成公网付款批次通过。"
|
||||||
"QAOPS9-5","证据归档与阶段收口","在 QAOPS9 执行完成后回填 CSV 状态、证据路径、文档索引和事实源矩阵,形成是否可进入 P2 功能决策或上线动作的结论。","1) QAOPS9 各行 DONE 均有 Test_Method 证据;2) 未完成项有 owner、阻断原因和下一步;3) 文档索引与事实源矩阵一致;4) 本轮是否部署和公网状态明确。","受影响流程:测试、发布和运维治理闭环;验证步骤:validate_issues_csv.py 本 CSV;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'QAOPS9|Go-No-Go|live smoke|恢复演练|SLO' docs issues;git diff --check。","python3|node|rg|git|manual","TODO","TODO","TODO","issues/2026-05-16_00-19-20-qaops9-release-hardening.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""QAOPS9-1"",""QAOPS9-2"",""QAOPS9-3"",""QAOPS9-4""]","QAOPS9 完成前不得默认进入付款批次或图片 OCR 实现;如发现 P0/P1 阻断,优先收口硬化问题。"
|
"QAOPS9-5","证据归档与阶段收口","在 QAOPS9 执行完成后回填 CSV 状态、证据路径、文档索引和事实源矩阵,形成是否可进入 P2 功能决策或上线动作的结论。","1) QAOPS9 各行 DONE 均有 Test_Method 证据;2) 未完成项有 owner、阻断原因和下一步;3) 文档索引与事实源矩阵一致;4) 本轮是否部署和公网状态明确。","受影响流程:测试、发布和运维治理闭环;验证步骤:validate_issues_csv.py 本 CSV;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'QAOPS9|Go-No-Go|live smoke|恢复演练|SLO' docs issues;git diff --check。","python3|node|rg|git|manual","TODO","TODO","TODO","issues/2026-05-16_00-19-20-qaops9-release-hardening.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""QAOPS9-1"",""QAOPS9-2"",""QAOPS9-3"",""QAOPS9-4""]","QAOPS9 完成前不得默认进入付款批次或图片 OCR 实现;如发现 P0/P1 阻断,优先收口硬化问题。"
|
||||||
|
|||||||
|
@@ -1,9 +1,9 @@
|
|||||||
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||||||
"P2D-0","P2 决策合同建档","建立 R7E 后 P2 决策合同,只做功能是否进入开发的决策、边界、先决条件、回滚口径和测试口径,不写业务代码。","1) CSV 校验通过;2) 文档索引和事实源矩阵登记 P2D;3) 不新增 API、schema、feature flag 或前端功能;4) 不启用 payment_batch_v1,不开放图片 OCR。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_00-19-21-p2-decision-followup.csv;node scripts/qa/audit-docs.mjs --check-registry;git diff --check;人工核对 git diff 仅包含 issues/docs。","python3|node|git|manual","DONE","DONE","DONE","issues/2026-05-16_00-19-21-p2-decision-followup.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[]","2026-05-16 建档;承接 FBA 建议 Issue 草案;回滚路径为删除本 CSV 与本轮索引登记;不影响运行环境。"
|
"P2D-0","P2 决策合同建档","建立 R7E 后 P2 决策合同,只做功能是否进入开发的决策、边界、先决条件、回滚口径和测试口径,不写业务代码。","1) CSV 校验通过;2) 文档索引和事实源矩阵登记 P2D;3) 不新增 API、schema、feature flag 或前端功能;4) 不启用 payment_batch_v1,不开放图片 OCR;5) 决策项统一使用 GO_TO_CONTRACT、HOLD_FOR_PREREQ、FREEZE。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_00-19-21-p2-decision-followup.csv;node scripts/qa/audit-docs.mjs --check-registry;git diff --check;人工核对 git diff 仅包含 issues/docs/scripts/qa。","python3|node|git|manual","DONE","DONE","DONE","issues/2026-05-16_00-19-21-p2-decision-followup.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; Rationale=<证据和原因>; Prereq=<前置条件>; NextContract=<P2-FIN|P2-OCR|P2-ORG|P2-WF|P2-BIZ|UX8|N/A>; Rollback=<回滚或撤销口径>; TestScope=<验收口径>。"
|
||||||
"P2D-1","组织主数据只读巡检决策","决定 P2-ORG 是否进入只读巡检合同,范围为直属主管缺失、主管或审批人停用、admin-only 误用、财务和管理员角色混授、企业微信绑定异常。","1) 只读巡检范围和查询边界清楚;2) 如需写修复必须另拆审批窗口;3) 不直接写生产账号数据;4) 巡检结果能映射到权限回归风险。","受影响流程:员工提交审批后按主管链流转,审批人和财务账号保持 active,企业微信绑定可用于入口和 deeplink;验证步骤:只读 SQL 或脚本生成账号、角色、主管、审批人和企业微信绑定矩阵,生产写操作不在本决策内。","manual|readonly-sql","TODO","TODO","TODO","docs/mcp-tools.md|docs/需求-企业微信基础设施规约.md|issues/2026-05-13_18-23-51-org8-master-data-permission.csv","[""P2D-0""]","默认只读;禁止 INSERT、UPDATE、DELETE;如批准修复需新建 P2-ORG 实现合同并写明审计和回滚。"
|
"P2D-1","组织主数据只读巡检决策","决定 P2-ORG 是否进入只读巡检合同,范围为直属主管缺失、主管或审批人停用、admin-only 误用、财务和管理员角色混授、企业微信绑定异常。","1) 只读巡检范围和查询边界清楚;2) 如需写修复必须另拆审批窗口;3) 不直接写生产账号数据;4) 巡检结果能映射到权限回归风险;5) 输出统一 Decision 模板。","受影响流程:员工提交审批后按主管链流转,审批人和财务账号保持 active,企业微信绑定可用于入口和 deeplink;验证步骤:只读 SQL 或脚本生成账号、角色、主管、审批人和企业微信绑定矩阵,生产写操作不在本决策内;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|readonly-sql","TODO","TODO","TODO","docs/mcp-tools.md|docs/需求-企业微信基础设施规约.md|issues/2026-05-13_18-23-51-org8-master-data-permission.csv","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=P2-ORG 或 N/A;默认只读,禁止 INSERT/UPDATE/DELETE;如批准修复需新建 P2-ORG 实现合同并写明审计和回滚。"
|
||||||
"P2D-2","付款批次启用决策","决定 P2-FIN 是否启用 payment_batch_v1,先锁角色边界、测试账号、公网验收窗口、导出审计和回滚方式。","1) 是否启用付款批次有明确结论;2) 角色矩阵覆盖财务成功、普通员工和 admin-only 拒绝;3) feature flag 和回滚路径明确;4) 不接真实支付或 ERP 实时凭证。","受影响流程:已审批报销进入财务复核,财务创建付款批次、复核、导出和审计,普通员工和 admin-only 不能越权;验证步骤:决策阶段只核对现有 flag_force_off 证据、PRD/财务规约和测试账号前置,不执行付款批次。","manual|rg","TODO","TODO","TODO","docs/海音达OA-MVP需求规格说明书.md|docs/报销发票附件规则.md|docs/trialrun/R7E后功能边界审计.md|issues/*.csv","[""P2D-0""]","不得在本合同开启 payment_batch_v1;实现必须另建 P2-FIN CSV、技术方案、权限 review 和回滚说明。"
|
"P2D-2","付款批次启用决策","决定 P2-FIN 是否启用 payment_batch_v1,先锁角色边界、测试账号、公网验收窗口、导出审计和回滚方式。","1) 是否启用付款批次有明确结论;2) 角色矩阵覆盖财务成功、普通员工和 admin-only 拒绝;3) feature flag 和回滚路径明确;4) 不接真实支付或 ERP 实时凭证;5) 输出统一 Decision 模板。","受影响流程:已审批报销进入财务复核,财务创建付款批次、复核、导出和审计,普通员工和 admin-only 不能越权;验证步骤:决策阶段只核对现有 flag_force_off 证据、PRD/财务规约和测试账号前置,不执行付款批次;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|rg","TODO","TODO","TODO","docs/海音达OA-MVP需求规格说明书.md|docs/报销发票附件规则.md|docs/trialrun/R7E后功能边界审计.md|issues/*.csv","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=P2-FIN 或 N/A;不得在本合同开启 payment_batch_v1;实现必须另建 P2-FIN CSV、技术方案、权限 review 和回滚说明。"
|
||||||
"P2D-3","图片 OCR 与样票治理决策","决定 P2-OCR 是否进入图片 OCR 样票治理,先锁授权样票、脱敏、provider、字段归一化、PDF-only 兼容、feature flag 和失败回滚。","1) 图片 OCR 是否进入开发有明确结论;2) 样票授权和脱敏路径明确;3) mock 与真实 provider 验收分离;4) 无授权图片样票时只能 SKIP 不能 PASS。","受影响流程:员工上传发票附件,PDF-only 流程不回归,图片样票进入 OCR 后能解释成功、失败、重复和人工复核;验证步骤:决策阶段只核对 OCR 规约、授权样票清单和 provider 前置,不调用真实图片 OCR。","manual|rg","TODO","TODO","TODO","docs/需求-报销发票OCR规约.md|docs/报销发票附件规则.md|docs/trialrun/R7E后功能边界审计.md","[""P2D-0""]","不得开放图片 OCR 入口;实现必须另建 P2-OCR CSV,声明 provider、flag、回滚和 PDF-only 兼容。"
|
"P2D-3","图片 OCR 与样票治理决策","决定 P2-OCR 是否进入图片 OCR 样票治理,先锁授权样票、脱敏、provider、字段归一化、PDF-only 兼容、feature flag 和失败回滚。","1) 图片 OCR 是否进入开发有明确结论;2) 样票授权和脱敏路径明确;3) mock 与真实 provider 验收分离;4) 无授权图片样票时只能 SKIP 不能 PASS;5) 输出统一 Decision 模板。","受影响流程:员工上传发票附件,PDF-only 流程不回归,图片样票进入 OCR 后能解释成功、失败、重复和人工复核;验证步骤:决策阶段只核对 OCR 规约、授权样票清单、腾讯云官方能力参考和 provider 前置,不调用真实图片 OCR;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|rg","TODO","TODO","TODO","docs/需求-报销发票OCR规约.md|docs/报销发票附件规则.md|docs/trialrun/R7E后功能边界审计.md","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=P2-OCR 或 N/A;不得开放图片 OCR 入口;实现必须另建 P2-OCR CSV,声明 provider、flag、回滚和 PDF-only 兼容。"
|
||||||
"P2D-4","UX8 反馈池承接决策","决定 UX8-1..5 是否继续保持真实反馈池或拆出具体体验修复,范围限移动和企业微信体验,不新增后端字段或业务域。","1) UX8-1..5 的保留、关闭或拆分理由清楚;2) 只有真实反馈或可复现问题才进入实现;3) 移动视口矩阵和真机差异验收口径明确;4) 不混入移动采购创建新能力。","受影响流程:iPhone 12 间距、详情扫读、财务摘要、移动采购创建评估和列表卡片反馈;验证步骤:核对 UX8 CSV、代表设备反馈和 320/360/375/390/393/414/430 视口矩阵,未复现项保持观察。","manual|playwright|rg","TODO","TODO","TODO","issues/2026-05-13_13-17-38-ux8-trialrun-feedback-polish.csv|docs/产品设计规则.md|output/playwright","[""P2D-0""]","体验修复不得改变后端接口或状态机;移动采购创建属于新能力,需独立需求频次确认。"
|
"P2D-4","UX8 反馈池承接决策","决定 UX8-1..5 是否继续保持真实反馈池或拆出具体体验修复,范围限移动和企业微信体验,不新增后端字段或业务域。","1) UX8-1..5 的保留、关闭或拆分理由清楚;2) 只有真实反馈或可复现问题才进入实现;3) 移动视口矩阵和真机差异验收口径明确;4) 不混入移动采购创建新能力;5) 输出统一 Decision 模板。","受影响流程:iPhone 12 间距、详情扫读、财务摘要、移动采购创建评估和列表卡片反馈;验证步骤:核对 UX8 CSV、代表设备反馈和 320/360/375/390/393/414/430 视口矩阵,未复现项保持观察;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|playwright|rg","TODO","TODO","TODO","issues/2026-05-13_13-17-38-ux8-trialrun-feedback-polish.csv|docs/产品设计规则.md|output/playwright","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=UX8 或 N/A;体验修复不得改变后端接口或状态机;移动采购创建属于新能力,需独立需求频次确认。"
|
||||||
"P2D-5","审批通知扩展与邮件通道决策","决定 P2-WF 是否推进转审扩展、通知模板、偏好设置或邮件通道;邮件必须先确认 SMTP、发件域、收件范围、退信处理和脱敏策略。","1) 审批通知扩展项有进入或冻结结论;2) 邮件通道前置条件明确;3) 企业微信个人应用消息仍是正式通知通道;4) 不进入复杂 BPM 或审批设计器。","受影响流程:审批待办、催办、超时提醒、通知 deeplink、企业微信个人应用消息和可能的邮件兜底;验证步骤:决策阶段核对审批规约、企业微信规约和 WF8 证据,缺 SMTP 等正式配置时邮件记录 SKIP。","manual|rg","TODO","TODO","TODO","docs/需求-统一审批中心规约.md|docs/需求-企业微信基础设施规约.md|issues/2026-05-13_18-23-52-wf8-approval-notification.csv","[""P2D-0""]","邮件通道不得在本合同实现;涉及 workflow、状态机或审批规则时必须独立 review。"
|
"P2D-5","审批通知扩展与邮件通道决策","决定 P2-WF 是否推进转审扩展、通知模板、偏好设置或邮件通道;邮件必须先确认 SMTP、发件域、收件范围、退信处理和脱敏策略。","1) 审批通知扩展项有进入或冻结结论;2) 邮件通道前置条件明确;3) 企业微信个人应用消息仍是正式通知通道;4) 不进入复杂 BPM 或审批设计器;5) 输出统一 Decision 模板。","受影响流程:审批待办、催办、超时提醒、通知 deeplink、企业微信个人应用消息和可能的邮件兜底;验证步骤:决策阶段核对审批规约、企业微信规约和 WF8 证据,缺 SMTP 等正式配置时邮件记录 SKIP;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|rg","TODO","TODO","TODO","docs/需求-统一审批中心规约.md|docs/需求-企业微信基础设施规约.md|issues/2026-05-13_18-23-52-wf8-approval-notification.csv","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=P2-WF 或 N/A;邮件通道不得在本合同实现;涉及 workflow、状态机或审批规则时必须独立 review。"
|
||||||
"P2D-6","轻业务增强决策","决定 P2-BIZ 是否评估供应商准入、轻量费用提示、项目费用或采购摘要、合同归档细化、资产盘点体验等轻增强。","1) 每个轻增强有业务频次、角色、验收和冻结结论;2) 不与付款批次、图片 OCR 或 UX 修复混同;3) 不启动 ERP、AI、完整差旅或重预算;4) 进入开发项另拆合同。","受影响流程:采购申请、费用提示、项目关联、合同附件归档和资产盘点;验证步骤:决策阶段核对 PRD、对应模块规约、FBA 审计和真实反馈,不改数据模型。","manual|rg","TODO","TODO","TODO","docs/海音达OA-MVP需求规格说明书.md|docs/需求-采购费用审批规约.md|docs/需求-合同附件归档规约.md|docs/需求-项目轻管理规约.md|docs/trialrun/R7E后功能边界审计.md","[""P2D-0""]","移动采购创建是新能力,不并入普通 UX 修复;任何 schema/API/UI 变更都必须另建实现合同。"
|
"P2D-6","轻业务增强决策","决定 P2-BIZ 是否评估供应商准入、轻量费用提示、项目费用或采购摘要、合同归档细化、资产盘点体验等轻增强。","1) 每个轻增强有业务频次、角色、验收和冻结结论;2) 不与付款批次、图片 OCR 或 UX 修复混同;3) 不启动 ERP、AI、完整差旅或重预算;4) 进入开发项另拆合同;5) 输出统一 Decision 模板。","受影响流程:采购申请、费用提示、项目关联、合同附件归档和资产盘点;验证步骤:决策阶段核对 PRD、对应模块规约、FBA 审计和真实反馈,不改数据模型;结论写为 GO_TO_CONTRACT、HOLD_FOR_PREREQ 或 FREEZE。","manual|rg","TODO","TODO","TODO","docs/海音达OA-MVP需求规格说明书.md|docs/需求-采购费用审批规约.md|docs/需求-合同附件归档规约.md|docs/需求-项目轻管理规约.md|docs/trialrun/R7E后功能边界审计.md","[""P2D-0""]","决策模板:Decision=<GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE>; NextContract=P2-BIZ 或 N/A;移动采购创建是新能力,不并入普通 UX 修复;任何 schema/API/UI 变更都必须另建实现合同。"
|
||||||
"P2D-7","冻结项确认与 P2 分流收口","确认 ERP 实时集成、AI 自动处理、完整差旅、复杂 BPM、审批设计器、重预算控制和企业微信原生审批继续冻结,并输出 P2 分流结论。","1) 冻结项清单与原因明确;2) 可进入开发的 P2 项有优先级和独立合同要求;3) 未进入项不从历史 TODO 自动复活;4) QAOPS9 优先级不被 P2 功能挤占。","受影响流程:全端功能边界和后续开发派工;验证步骤:validate_issues_csv.py 本 CSV;rg -n 'P2D|冻结|ERP|AI|差旅|复杂 BPM|审批设计器|重预算|企业微信原生审批|付款批次|图片 OCR|组织主数据|UX8' docs issues;人工核对分流结论。","python3|rg|manual","TODO","TODO","TODO","issues/2026-05-16_00-19-21-p2-decision-followup.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md","[""P2D-1"",""P2D-2"",""P2D-3"",""P2D-4"",""P2D-5"",""P2D-6""]","P2D 收口后才能按批准结果新建 P2-FIN、P2-OCR、P2-ORG、P2-WF、P2-BIZ 或 UX8 实现合同。"
|
"P2D-7","冻结项确认与 P2 分流收口","确认 ERP 实时集成、AI 自动处理、完整差旅、复杂 BPM、审批设计器、重预算控制和企业微信原生审批继续冻结,并输出 P2 分流结论。","1) 冻结项清单与原因明确;2) 可进入开发的 P2 项有优先级和独立合同要求;3) 未进入项不从历史 TODO 自动复活;4) QAOPS9 优先级不被 P2 功能挤占;5) 汇总所有 Decision 模板。","受影响流程:全端功能边界和后续开发派工;验证步骤:validate_issues_csv.py 本 CSV;rg -n 'P2D|GO_TO_CONTRACT|HOLD_FOR_PREREQ|FREEZE|ERP|AI|差旅|复杂 BPM|审批设计器|重预算|企业微信原生审批|付款批次|图片 OCR|组织主数据|UX8' docs issues;人工核对分流结论。","python3|rg|manual","TODO","TODO","TODO","issues/2026-05-16_00-19-21-p2-decision-followup.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md","[""P2D-1"",""P2D-2"",""P2D-3"",""P2D-4"",""P2D-5"",""P2D-6""]","P2D 收口后才能按批准结果新建 P2-FIN、P2-OCR、P2-ORG、P2-WF、P2-BIZ 或 UX8 实现合同;未获 GO_TO_CONTRACT 的项保持 HOLD_FOR_PREREQ 或 FREEZE。"
|
||||||
|
|||||||
|
@@ -44,6 +44,8 @@ Usage: bash scripts/qa/run-business-flow-gates.sh <local|attached|list>
|
|||||||
|
|
||||||
可选环境变量:
|
可选环境变量:
|
||||||
BUSINESS_FLOW_GROUPS=auth,reimbursement 仅运行部分业务域
|
BUSINESS_FLOW_GROUPS=auth,reimbursement 仅运行部分业务域
|
||||||
|
BUSINESS_FLOW_EXCLUDE_SPECS=tests/e2e/a.spec.ts,tests/e2e/b.spec.ts
|
||||||
|
从已选业务域中排除指定 Playwright spec,多个值可用逗号或空白分隔
|
||||||
E2E_BASE_URL attached 模式下必填或沿用 Playwright 默认
|
E2E_BASE_URL attached 模式下必填或沿用 Playwright 默认
|
||||||
USAGE
|
USAGE
|
||||||
}
|
}
|
||||||
@@ -140,11 +142,30 @@ selected_groups() {
|
|||||||
printf '%s\n' "${GROUP_ORDER[@]}"
|
printf '%s\n' "${GROUP_ORDER[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
spec_is_excluded() {
|
||||||
|
local candidate="$1"
|
||||||
|
local raw="${BUSINESS_FLOW_EXCLUDE_SPECS:-}"
|
||||||
|
local excluded
|
||||||
|
|
||||||
|
[[ -n "$raw" ]] || return 1
|
||||||
|
|
||||||
|
while IFS= read -r excluded; do
|
||||||
|
[[ -n "$excluded" ]] || continue
|
||||||
|
if [[ "$candidate" == "$excluded" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done < <(printf '%s\n' "$raw" | tr ',' '\n' | tr '[:space:]' '\n')
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
existing_specs_for_group() {
|
existing_specs_for_group() {
|
||||||
local group="$1"
|
local group="$1"
|
||||||
local spec
|
local spec
|
||||||
while IFS= read -r spec; do
|
while IFS= read -r spec; do
|
||||||
[[ -f "$CLIENT_DIR/$spec" ]] && printf '%s\n' "$spec"
|
[[ -f "$CLIENT_DIR/$spec" ]] || continue
|
||||||
|
spec_is_excluded "$spec" && continue
|
||||||
|
printf '%s\n' "$spec"
|
||||||
done < <(specs_for_group "$group")
|
done < <(specs_for_group "$group")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户