# 目标状态判定 DiAL 使用单层状态模型。 | 状态 | 含义 | | ------ | ---------------------------------------- | | `UP` | 拨测结果符合 `expect` 规则 | | `DOWN` | 拨测结果不符合 `expect` 规则,或执行失败 | 执行失败(网络错误、超时、进程崩溃)和 expect 不匹配都统一为 `DOWN`,通过 `failure.kind` 区分原因。 | `failure.kind` | 含义 | | -------------- | ---------------------------------------- | | `error` | 网络、超时、进程、协议解析或内部执行错误 | | `mismatch` | 拨测完成,但结果不满足 expect | ## API 结果字段 API 返回的检查结果包含 `detail` 和 `observation`。 | 字段 | 说明 | | ------------- | ------------------------------------------------------------ | | `detail` | 后端按 checker 类型从结构化 observation 动态生成的人可读摘要 | | `observation` | 保存该次检查的结构化观测数据 | | `failure` | 保存首个错误或不匹配原因 | | `matched` | 是否符合 expect | | `durationMs` | 本次检查耗时 | | `timestamp` | 本次检查时间 | `detail` 不写入 SQLite。存储层仅持久化 `observation` JSON、`failure` JSON、匹配状态、耗时和时间戳。 ## observation 示例 不同 checker 的 observation 字段不同,常见信息包括: | Checker | observation 内容示例 | | ------- | ------------------------------------------------------------------ | | HTTP | 状态码、响应头、按需读取的 body 预览 | | Cmd | exit code、stdout/stderr 预览 | | TCP | 连接结果、banner 摘要 | | UDP | 响应内容、来源地址、响应大小 | | ICMP | 存活结果、丢包率、平均延迟、最大延迟 | | DNS | RCODE、记录值、TTL、flags、CNAME 链 | | LLM | HTTP 状态、模型输出、finish reason、token usage、流式首 token 时间 | ## 趋势与统计 Dashboard 基于存储的检查结果计算实时状态、可用率、耗时趋势、P95、状态条和故障段等指标。指标语义由后端应用层实现,SQLite 主要负责存储、筛选、排序、分页和基础聚合。