Files

56 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

# iAOP 端到端联调用例(Issue #86)
对应 PRD 第 8 章「端到端联调」与 EPIC #14(M4)子任务 #86。
跨四个 iAOP-Core 内核模块的全链路联调测试,覆盖「数据流」与「问答流」两条端到端链路,
全部基于各模块的**可注入接口**运行,零外部依赖(不依赖 Kafka / TDengine / PostgreSQL /
MinIO / 真实 LLM / 真实设备),可在 CI 中直接执行。
## 链路覆盖
### 数据流(PRD 5.1 → 5.2)
`edge-gateway` 只读采集(模拟驱动)→ `spool` 断点续传缓存 → `data-bus` BatchWriter
批量写入(MemorySink,幂等去重,「不丢不重」)→ 健康度上报(P99 / 丢失率 / 可用性)。
| 用例 | 验证点 |
|------|--------|
| `test_collect_once_all_points_read_into_spool` | 单轮采集:全部点位读出并落 spool |
| `test_collect_multiple_rounds_accumulate` | 多轮采集:spool 累计 = 轮数 × 点位数(不丢) |
| `test_spool_drain_into_batchwriter_no_loss_no_dup` | spool → 批量写入:不丢不重 |
| `test_batchwriter_idempotent_on_replay` | 断点续传重发:幂等去重 |
| `test_sample_fields_preserved_end_to_end` | 样本字段端到端完整 |
| `test_health_metrics_reflect_collection` | 健康度随轮次累计,满足 SLA(P99≤1.8s / 丢失率≤0.02% / 可用性≥99.8%) |
### 问答流(PRD 5.4)
`rag-kb` 模板化知识库检索(命中文档片段 + 来源)→ `llm-gateway` 混合网关
(敏感度路由 → 生成 → 幻觉/溯源校验 → DLP 出站防线)。
| 用例 | 验证点 |
|------|--------|
| `test_kb_retrieval_returns_relevant_chunks_with_source` | RAG 检索命中并带来源 |
| `test_kb_category_filter` | 类别过滤(工艺规范 / SOP / 国标) |
| `test_normal_question_routes_local_with_rag_context` | 普通问题 → 本地后端 + 来源引用 |
| `test_sensitive_query_blocked_by_dlp` | 敏感数据 → DLP 拦截 → block → 转人工 |
| `test_generic_question_routes_cloud` | 通用问题 DLP 放行闭环正常 |
| `test_high_stakes_low_confidence_to_human` | 高利害 + 低信度 → 转人工复核 |
| `test_audit_drain_after_query` | 各组件审计记录可统一导出 |
### 跨链路集成(业务闭环)
采集 → 落库 → 知识沉淀 → 安全问答的完整业务闭环(`test_cross_pipeline.py`)。
## 运行方式
```bash
# 在仓库根目录执行(需 Python 3.8+,仅标准库依赖)
python -m unittest discover -s tests/e2e -v
```
## 设计说明
- **零外部依赖**:四个内核模块的存储 / 推理 / 协议接入均设计为可注入接口
(`StoreSink` / `InferenceBackend` / `Driver`),联调用内存桩替换真实后端,
保证 CI 可重复执行且不污染环境。
- **模块加载**:四个 core 模块的源码组织方式不一致(edge-gateway 为裸导入,
其余为带连字符目录名的包),由 `_bootstrap.py` 统一加载(详见该文件注释)。
- **断言对齐 PRD 验收基线**:健康度断言直接引用 PRD 第 9 章 NFR 阈值
(P99≤1.8s / 丢失率≤0.02% / 可用性≥99.8%),DLP 断言验证 100% 拦截目标。