Result Schema
📋 `pkg/models/models.go` — 采集结果数据契约。
Result 是 snir 一切采集的顶层结构,序列化为 JSONL/CSV、持久化到 SQLite、喂给报告生成。
📁 源码:
pkg/models/models.go
顶层结构
| 符号 | 源码 | 说明 |
|---|---|---|
RequestType | L14 | 请求类型枚举 |
Result | L22 | 顶层结果 |
EnrichEndpoint | L117 | 端点归一化 |
DefaultPortForScheme | L124 | 协议默认端口 |
Result 字段一览
| 字段 | 行 | 类型 | 说明 |
|---|---|---|---|
Path | L23 | string | 截图存储路径 |
ID | L24 | uint | 主键 |
URL | L26 | string | 原始目标 |
SchemaVersion | L27 | string | schema 版本 |
Scheme/Host/Port/Endpoint | L28-31 | 归一化端点 | |
ProbedAt | L32 | time | 采集时间 |
FinalURL | L33 | string | 跳转后 URL |
ResponseCode/Reason | L34-35 | 状态码/原因 | |
Protocol | L36 | string | HTTP 协议版本 |
ContentLength | L37 | int64 | 内容长度 |
HTML | L38 | string | 页面 HTML |
Title | L39 | string | 标题 |
PerceptionHash | L40 | string | pHash |
PerceptionHashGroupId | L41 | uint | pHash 分组 |
Screenshot | L42 | string | 截图路径/引用 |
ScreenshotBytes | L43 | []byte | 截图字节(不持久化) |
Filename | L46 | string | 文件名 |
IsPDF | L47 | bool | 是否 PDF |
Failed/FailedReason | L50-51 | 失败标记 |
关联(一对多)
| 字段 | 行 | 类型 | 说明 |
|---|---|---|---|
TLS | L53 | TLS | 证书信息 |
Technologies | L54 | []Technology | 技术栈 |
Headers | L56 | []Header | 响应头 |
Network | L57 | []NetworkLog | 网络日志 |
Console | L58 | []ConsoleLog | Console 日志 |
Cookies | L59 | []Cookie | Cookies |
ER 图
EnrichEndpoint 流程
EnrichEndpoint 把原始 URL 拆解为 Scheme/Host/Port/Endpoint:
序列化约定
ScreenshotBytes标json:"-"不进 JSON,避免大块 base64- GORM 索引:
html/title/perception_hash便于查询 - 关联
OnDelete:CASCADE:删 Result 连带删子记录
子结构
详见 字段字典。