feat: 完成P10生产硬化与矩阵收口(P10E1-P10G1)
这个提交包含在:
+79
@@ -442,3 +442,82 @@ npm run job:ocr-once
|
||||
### 8.2 磁盘空间不足(ENOSPC)
|
||||
- 在受控环境中制造磁盘满条件后重试上传。
|
||||
- 预期:错误路径可观测(日志中能定位到 I/O 错误),不要求纳入日常 CI 冒烟。
|
||||
|
||||
---
|
||||
|
||||
## 9. P6-P10 增量能力(验真 / 看板 / 预算 / 集成 / 生产硬化)
|
||||
|
||||
### 9.1 特性开关(默认值)
|
||||
- `INVOICE_VERIFICATION_ENABLED=false`
|
||||
- `VERIFICATION_PROVIDER=mock`
|
||||
- `BUDGET_CONTROL_MODE=warn`
|
||||
- `ERP_SYNC_ENABLED=false`
|
||||
- `ERP_SYNC_PROVIDER=mock`
|
||||
- `ERP_SYNC_ENDPOINT=`
|
||||
- `ERP_SYNC_TIMEOUT_MS=5000`
|
||||
- `ERP_SYNC_AUTH_TOKEN=`
|
||||
- `TRAVEL_SYNC_ENABLED=false`
|
||||
- `IM_NOTIFIER_ENABLED=false`
|
||||
|
||||
建议:先在测试组织灰度开启,再逐步扩大范围。
|
||||
|
||||
### 9.2 新增 API 摘要
|
||||
- 发票验真:
|
||||
- `POST /api/invoice-pool/:id/verify`
|
||||
- `GET /api/invoice-pool/:id/verification`
|
||||
- `POST /api/invoice-pool/:id/verification/retry`
|
||||
- 看板聚合:
|
||||
- `GET /api/dashboard/expense-overview`
|
||||
- `GET /api/dashboard/trends`
|
||||
- `GET /api/dashboard/top-categories`
|
||||
- `GET /api/dashboard/approval-efficiency`
|
||||
- 预算管理:
|
||||
- `GET /api/budgets`
|
||||
- `POST /api/budgets`
|
||||
- `PATCH /api/budgets/:id`
|
||||
- `POST /api/budgets/:id/archive`
|
||||
- 外部集成:
|
||||
- `POST /api/integrations/erp/sync/:reimbursementId`
|
||||
- `POST /api/travel/orders/import`
|
||||
- `GET /api/notifications/channels`
|
||||
- `POST /api/notifications/channels/test`
|
||||
|
||||
### 9.3 新增回归脚本
|
||||
```bash
|
||||
cd /home/shunli/Projects/hyb-oa/server
|
||||
./scripts/regression-verification.sh
|
||||
./scripts/regression-dashboard.sh
|
||||
./scripts/regression-budget.sh
|
||||
./scripts/regression-integrations.sh
|
||||
```
|
||||
|
||||
可通过总回归开关启用:
|
||||
```bash
|
||||
cd /home/shunli/Projects/hyb-oa/server
|
||||
RUN_VERIFICATION_REGRESSION=1 \
|
||||
RUN_DASHBOARD_REGRESSION=1 \
|
||||
RUN_BUDGET_REGRESSION=1 \
|
||||
RUN_INTEGRATIONS_REGRESSION=1 \
|
||||
./scripts/regression-all.sh
|
||||
```
|
||||
|
||||
### 9.4 单次任务脚本(调试)
|
||||
```bash
|
||||
cd /home/shunli/Projects/hyb-oa/server
|
||||
VERIFICATION_RECORD_ID=<uuid> npm run job:verification-once
|
||||
npm run job:integration-outbox-once
|
||||
```
|
||||
|
||||
### 9.5 回滚建议
|
||||
1. 先关闭特性开关(验真/ERP/差旅/IM)。
|
||||
2. 再停止相关任务调度(verification / integration outbox)。
|
||||
3. 不回滚审计与历史台账数据,保持可追溯。
|
||||
|
||||
|
||||
### 9.6 P9/P10 维护性与硬化说明
|
||||
- 票据路由拆分:验真端点已拆到 `src/routes/invoicePool/verification.js`,读路径端点已拆到 `src/routes/invoicePool/read.js`,主入口仍为 `src/routes/invoicePool.js`,API 路径不变。
|
||||
- Shared 抽象:`src/routes/invoicePool/shared/{selects,mappers,schemas,helpers}.js` 统一验真映射与票据查询 `select`,避免字段漂移。
|
||||
- 看板聚合:`/api/dashboard/trends` 与 `/api/dashboard/top-categories` 已改为数据库聚合(groupBy),降低大数据量下内存聚合开销。
|
||||
- 看板回归:`./scripts/regression-dashboard.sh` 新增重复请求一致性断言;可通过 `DASHBOARD_PERF_CHECK=1` 打印趋势接口耗时探针。
|
||||
- ERP硬化回归:`./scripts/regression-integrations.sh` 内嵌最小 Node Mock ERP 服务,覆盖 success / 4xx(dead_letter) / 5xx(retry) / timeout(retry)。
|
||||
- 矩阵门禁:`scripts/validate-feature-matrix.py` 默认校验 P5 + P6-P8 + P9 + P10 四事实源;`./scripts/check-minimal.sh` 会自动执行该校验。
|
||||
|
||||
在新工单中引用
屏蔽一个用户