chore(P14-8): 完成运营化与验收收口

这个提交包含在:
2026-03-06 23:24:16 +08:00
父节点 b50b084100
当前提交 d8fff0ba21
共修改 28 个文件,包含 2820 行新增和 123 行删除
+14 -4
查看文件
@@ -1,8 +1,8 @@
# hyb-oa 实现状态矩阵(P5-P13)
# hyb-oa 实现状态矩阵(P5-P14)
**快照日期**:2026-02-12
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8`,共 101 项。
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv`(执行合同)
**快照日期**:2026-02-13
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8`,共 110 项。
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv`(执行合同)
**说明**:
- 本矩阵用于全局读图(审计/交接/回归覆盖追踪),不替代 `issues/*.csv` 的执行合同职责。
@@ -115,3 +115,13 @@
| P13-6 | CI回归报告归档 | §16(CI治理) | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12 | DONE | .github/workflows/ci-regression.yml artifact | run_id+sha 可追溯 |
| P13-7 | 变更失败率统计脚本 | §16(DORA 指标治理) | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12 | DONE | python3 scripts/cfr_report.py --window 7d,30d | failed_commit=回归失败或24h热修 |
| P13-8 | P13验收与矩阵收口 | §16(状态治理) | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12_01-09-41-p13-l5-governance.csv | 2026-02-12 | DONE | check-minimal + regression-all + validate-feature-matrix | none |
| P14-0 | P14执行合同建档 | §16(执行合同治理) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | manual | none |
| P14-1 | 回归报告Schema固化 | §16(报告Schema) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | scripts/validate_regression_report.py | none |
| P14-2 | CI回归摘要发布 | §16(CI摘要) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | manual | none |
| P14-3 | CFR自动周/月报 | §16(CFR报告) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | scripts/cfr_report.py | none |
| P14-4 | 高风险服务单测扩容 | §16(单测覆盖率) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | cd server && npm run test:coverage | 仅纯单测 |
| P14-5 | 覆盖率门禁渐进 | §16(覆盖率门禁) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | scripts/coverage_gate.js | none |
| P14-6 | OpenAPI覆盖扩展与漂移检查 | §16(OpenAPI覆盖扩展) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | scripts/openapi_diff_check.py | none |
| P14-7 | 分布式追踪最小落地 | §16(链路追踪) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | manual | none |
| P14-8 | P14验收与矩阵收口 | §16(验收与同步) | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13_00-11-56-p14-l5-operationalization.csv | 2026-02-13 | DONE | scripts/check-minimal.sh | none |
+3 -2
查看文件
@@ -33,6 +33,7 @@ RUN_AUDIT_REGRESSION=1 RUN_OCR_REGRESSION=1 ./scripts/regression-all.sh --json-r
## 排障建议
- 回归失败时优先下载 artifact,检查 `overall.failed` 与 `steps[].status="failed"`。
- 若报告未生成,检查回归步骤是否在脚本启动前失败(例如服务未就绪)。
- **优先查看 Job Summary**:流水线完成后会自动在 GitHub Actions 运行页面的 Summary 面板输出结构化摘要,可直接看到由于哪些 `steps` 导致阻断失败。
- 回归大面积或异常失败时,请优先下载 artifact 中的 `report.json` 进一步比对 `overall.failed` 与具体抛出的退出码。
- 若报告未生成,检查回归步骤是否在脚本启动前失败(例如服务未就绪,数据库连不上)。
- 若报告字段缺失,优先比对 `server/scripts/lib/regression-report.sh` 与 schema 版本。
+21
查看文件
@@ -0,0 +1,21 @@
# Testing Strategy
## Coverage Gate Policy
为保障核心系统迭代质量,目前系统配备了渐进式的覆盖率门禁(Coverage Gate)。
- **阈值标准**:
核心关键模块代码行覆盖率要求 >= 70% 才能算作合格。关键模块目前指代:
- `src/services/featureFlags`
- `src/services/verification`
- `src/services/integrations/dispatcher.js`
- `src/services/integrations/outbox.js`
- `src/services/integrations/erp.js`
- `src/utils/workflow.js`
- **阻断策略**:
1. 在**Pull Request (PR)**中,覆盖率达不到门禁要求时系统将挂出 Warn 告警,但不会中断构建进度(即不强制干预协作交付)。
2. 在**main 分支**中,低于上述覆盖率标准将抛出致命错误并标记部署失败(Error/Fail Block)。此外,全量域仅采取柔性报告并不强制失败。
## CI Integration
流水线集成了 Vitest `npm run test:coverage` 与 node 自定义的 `scripts/coverage_gate.js` 保障上述策略。执行结果会自动附着于 Actions Job Summary。
机房脚本将自动解析 coverage-summary.json 从而提取对应业务模块的 `lines.pct` 并在 GITHUB_REF_NAME 为依据判定通过。
+11
查看文件
@@ -0,0 +1,11 @@
# Tracing Strategy
## OpenTelemetry Integration
为了未来能进行细粒度的分布式追踪监控,后台程序目前内嵌了 OpenTelemetry (OTel) 的 `sdk-node` 及自动集成框架 `auto-instrumentations-node`。
- OTel 的启动是 **Fail-Safe** 的。所有链路追踪功能受环境变量硬闸 `OTEL_TRACES_ENABLED` 控制。
- 该环境变量默认情况为关闭。开启 `OTEL_TRACES_ENABLED=true` 时,应用将自动在 Console 输出现行 Span。在将来亦可快速配置通过 OTLP 格式投递到远端拓扑分析平台(如 Jaeger、DataDog 等)。
## 验证与试运行
- 可执行 `cd server && node --check src/observability/tracing.js` 验证基础语法挂载。
- 在开发态下,如配置 `OTEL_TRACES_ENABLED=true`启动服务,则客户端发出的接口请求均会在服务端控制台打印包含 Trace ID、Span ID 的追踪结果日志。由此表明 HTTP 拦截器正在正确解析和处理 `traceparent` 协议报文头。