259 lines
5.8 KiB
Markdown
259 lines
5.8 KiB
Markdown
# 数据模型总览
|
||
|
||
**更新日期**:2026-07-05
|
||
**状态**:当前可运行架构
|
||
|
||
## 1. 定位
|
||
|
||
本文从架构角度说明当前 MVP 的核心数据模型。详细字段仍以 Flyway migration 和 `mvp/tables/` 为准。
|
||
|
||
核心数据分三组:
|
||
|
||
- 诊断 Trace:`diagnosis_session`、`agent_step`、`tool_invocation`
|
||
- 知识库:`api_document`、`knowledge_domain`、Milvus/Zilliz metadata
|
||
- 反馈沉淀:`case_library`
|
||
|
||
## 2. 总体关系
|
||
|
||
```mermaid
|
||
erDiagram
|
||
diagnosis_session ||--o{ agent_step : has
|
||
diagnosis_session ||--o{ tool_invocation : has
|
||
diagnosis_session ||--o| case_library : creates_when_useful
|
||
api_document ||--o{ milvus_chunk : indexed_as
|
||
knowledge_domain ||--o{ api_document : groups
|
||
|
||
diagnosis_session {
|
||
bigint id
|
||
varchar session_id
|
||
text query
|
||
varchar status
|
||
varchar agent_flow
|
||
longtext answer
|
||
json self_evaluation
|
||
varchar feedback
|
||
}
|
||
|
||
agent_step {
|
||
bigint id
|
||
varchar session_id
|
||
int step_index
|
||
varchar agent_name
|
||
text model_input
|
||
text model_output
|
||
text thought
|
||
boolean has_tool_call
|
||
}
|
||
|
||
tool_invocation {
|
||
bigint id
|
||
varchar session_id
|
||
varchar tool_name
|
||
json input_params
|
||
text output_preview
|
||
varchar retrieval_layer
|
||
json retrieval_details
|
||
varchar relevance_level
|
||
varchar dedup_reason
|
||
}
|
||
|
||
api_document {
|
||
bigint id
|
||
varchar doc_id
|
||
varchar file_name
|
||
varchar file_path
|
||
varchar status
|
||
int chunk_count
|
||
text metadata
|
||
}
|
||
|
||
knowledge_domain {
|
||
bigint id
|
||
varchar domain_id
|
||
varchar description
|
||
text when_to_retrieve
|
||
int document_count
|
||
}
|
||
|
||
case_library {
|
||
bigint id
|
||
varchar case_id
|
||
varchar diagnosis_id
|
||
varchar source_type
|
||
varchar fault_category
|
||
text root_cause
|
||
text solution
|
||
}
|
||
|
||
milvus_chunk {
|
||
varchar id
|
||
text content
|
||
json metadata
|
||
vector vector
|
||
}
|
||
```
|
||
|
||
说明:Milvus/Zilliz collection 不是 MySQL 表,图中的 `milvus_chunk` 是逻辑模型。
|
||
|
||
## 3. 诊断 Trace 模型
|
||
|
||
### diagnosis_session
|
||
|
||
会话级主记录。
|
||
|
||
关键字段:
|
||
|
||
| 字段 | 说明 |
|
||
|---|---|
|
||
| `session_id` | 外部关联键,Trace 和 Feedback 都使用它 |
|
||
| `query` | 用户原始问题或 AIOps 输入摘要 |
|
||
| `status` | 执行状态 |
|
||
| `agent_flow` | `CHAT` / `AI_OPS` |
|
||
| `answer` | 最终答复或告警报告 |
|
||
| `self_evaluation` | rule/verifier/aiops 自评估容器 |
|
||
| `feedback` | 用户反馈 |
|
||
|
||
### agent_step
|
||
|
||
记录模型调用步骤。
|
||
|
||
用途:
|
||
|
||
- 回放 Agent 推理过程。
|
||
- 查看 Planner / Executor / Verifier 的输入输出摘要。
|
||
- 统计 step count、duration、token count。
|
||
|
||
### tool_invocation
|
||
|
||
记录工具调用事实。
|
||
|
||
用途:
|
||
|
||
- 给 Trace API 展示证据。
|
||
- 给 Verifier 构造 `tool_trace_summary`。
|
||
- 给 `EvaluationService` 计算 evidence score。
|
||
- 给 RAG eval 和人工排查提供检索细节。
|
||
|
||
## 4. 知识库模型
|
||
|
||
### api_document
|
||
|
||
MySQL 中的文档元数据表。
|
||
|
||
职责:
|
||
|
||
- 管理上传文件。
|
||
- 保存 file hash,用于去重。
|
||
- 记录索引状态和 chunk 数量。
|
||
- 保存 frontmatter JSON。
|
||
|
||
### knowledge_domain
|
||
|
||
领域级元数据。
|
||
|
||
职责:
|
||
|
||
- 按 category 聚合文档。
|
||
- 存储领域描述。
|
||
- 存储 `when_to_retrieve`,辅助 Planner/Executor 判断什么时候检索该领域。
|
||
|
||
### Milvus/Zilliz metadata
|
||
|
||
向量 collection 中每个 chunk 的 metadata 主要包括:
|
||
|
||
```text
|
||
docId
|
||
_source
|
||
chunkIndex
|
||
totalChunks
|
||
title
|
||
breadcrumb
|
||
category
|
||
```
|
||
|
||
这些字段支撑:
|
||
|
||
- category filter。
|
||
- source 展示。
|
||
- breadcrumb 上下文。
|
||
- docId 删除和重建索引。
|
||
- evidence block 构造。
|
||
|
||
## 5. 反馈沉淀模型
|
||
|
||
### case_library
|
||
|
||
`useful` 反馈会触发 `CaseLibraryService.createFromSession`。
|
||
|
||
当前自动映射:
|
||
|
||
| 字段 | 来源 |
|
||
|---|---|
|
||
| `case_id` | UUID |
|
||
| `diagnosis_id` | `diagnosis_session.session_id` |
|
||
| `source_type` | `AUTO` |
|
||
| `fault_category` | 当前默认 `GENERAL` |
|
||
| `title` | session query 前 100 字符 |
|
||
| `root_cause` | session answer |
|
||
| `solution` | session answer |
|
||
| `created_by` | `system` |
|
||
|
||
## 6. self_evaluation 结构
|
||
|
||
`diagnosis_session.self_evaluation` 是 JSON 容器:
|
||
|
||
```json
|
||
{
|
||
"rule_evaluation": {},
|
||
"verifier_evaluation": {},
|
||
"aiops_rule_evaluation": {}
|
||
}
|
||
```
|
||
|
||
边界:
|
||
|
||
- `rule_evaluation` 评估证据收集充分度。
|
||
- `verifier_evaluation` 评估 Chat 答案关键事实是否有证据支撑。
|
||
- `aiops_rule_evaluation` 评估 AIOps 报告是否聚焦告警并使用证据。
|
||
|
||
## 7. 数据写入时序
|
||
|
||
```mermaid
|
||
sequenceDiagram
|
||
autonumber
|
||
participant API as API
|
||
participant Svc as ChatService/AiOpsService
|
||
participant Session as diagnosis_session
|
||
participant Agent as Agent
|
||
participant Step as agent_step
|
||
participant Tool as tool_invocation
|
||
participant Eval as self_evaluation
|
||
participant Feedback as case_library
|
||
|
||
API->>Svc: request
|
||
Svc->>Session: create/update RUNNING
|
||
Agent->>Step: before/after model
|
||
Agent->>Tool: tool call record
|
||
Svc->>Session: SUCCESS/FAILED + answer
|
||
Svc->>Eval: merge evaluation
|
||
API->>Svc: feedback useful
|
||
Svc->>Feedback: create case
|
||
```
|
||
|
||
## 8. 当前边界和后续
|
||
|
||
当前边界:
|
||
|
||
- `agent_step.session_id` 和 `tool_invocation.session_id` 通过 sessionId 关联,不强制外键。
|
||
- `tool_invocation.step_id` 可为空。
|
||
- Milvus chunk 与 `api_document` 通过 metadata.docId 逻辑关联。
|
||
- `case_library` 与 session 通过 `diagnosis_id=session_id` 关联。
|
||
|
||
后续可增强:
|
||
|
||
1. 增加 run id,支持同 session 多次独立诊断。
|
||
2. 强化 `tool_invocation.step_id` 关联。
|
||
3. 将 evidence block 结构化保存。
|
||
4. 将 `case_library` 的 rootCause/solution 从完整 answer 中结构化抽取。
|
||
|