|
|
@@ -33,6 +33,8 @@
|
|
|
- `runtime/substore_vars.json`:给外部系统消费的变量
|
|
|
|
|
|
> 注意:`domain_updater.py` 现在会按 `--config` 文件所在目录解析 `output.runtime_dir`(默认 `./runtime`),避免误写到 `scripts/runtime/`。
|
|
|
+>
|
|
|
+> 注意:`main` 分支通常不追踪 `runtime/`(由 `.gitignore` 忽略),运行时产物建议通过 `runtime-state` 分支消费。
|
|
|
|
|
|
---
|
|
|
|
|
|
@@ -76,59 +78,54 @@
|
|
|
"field_map": {
|
|
|
"domain": "ip",
|
|
|
"created_at": "createdTime",
|
|
|
- "avg_score": "avgScore",
|
|
|
- "yd_score": "ydScore",
|
|
|
- "dx_score": "dxScore",
|
|
|
- "lt_score": "ltScore",
|
|
|
- "avg_latency": "avgLatency",
|
|
|
- "avg_pkg_lost_rate": "avgPkgLostRate",
|
|
|
- "yd_latency": "ydLatency",
|
|
|
- "yd_pkg_lost_rate": "ydPkgLostRate",
|
|
|
- "lt_latency": "ltLatency",
|
|
|
- "lt_pkg_lost_rate": "ltPkgLostRate",
|
|
|
- "dx_latency": "dxLatency",
|
|
|
- "dx_pkg_lost_rate": "dxPkgLostRate",
|
|
|
- "location_country": "locationCountry",
|
|
|
- "location_city": "locationCity"
|
|
|
+ "avg_score": "avgScore"
|
|
|
},
|
|
|
"created_time_formats": ["%Y-%m-%d %H:%M:%S"],
|
|
|
"created_time_timezone": "UTC"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-`record_filter` 示例(排除 locationCountry/locationCity 含“泛播”的记录):
|
|
|
+`record_filter` 示例(示例仅保留 1 条规则):
|
|
|
|
|
|
```json
|
|
|
"record_filter": {
|
|
|
- "enabled": true,
|
|
|
+ "enabled": false,
|
|
|
"exclude_if_any": [
|
|
|
- { "field": "location_country", "contains": "泛播", "case_sensitive": false },
|
|
|
- { "field": "location_city", "contains": "泛播", "case_sensitive": false }
|
|
|
+ { "field": "domain", "regex": "(test|staging)", "case_sensitive": false }
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
-`scoring` 示例(`avg_score` 默认最高权重):
|
|
|
+`scoring` 示例(最简 weighted_average,且当前分数语义为“越低越好”):
|
|
|
|
|
|
```json
|
|
|
"scoring": {
|
|
|
"enabled": true,
|
|
|
"strategy": "weighted_average",
|
|
|
"weighted_fields": [
|
|
|
- { "field": "avg_score", "weight": 0.5 },
|
|
|
- { "field": "yd_score", "weight": 0.2 },
|
|
|
- { "field": "dx_score", "weight": 0.1 },
|
|
|
- { "field": "lt_score", "weight": 0.2 }
|
|
|
+ { "field": "avg_score", "weight": 1.0 }
|
|
|
],
|
|
|
- "prefer_lower": false,
|
|
|
+ "prefer_lower": true,
|
|
|
"within_hours": 24,
|
|
|
"tie_breakers": [
|
|
|
- { "field": "created_at", "order": "desc" },
|
|
|
{ "field": "domain", "order": "asc" }
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
+`healthcheck` 示例(当前默认 attempts=5):
|
|
|
+
|
|
|
+```json
|
|
|
+"healthcheck": {
|
|
|
+ "enabled": false,
|
|
|
+ "attempts": 5,
|
|
|
+ "timeout_ms": 1800,
|
|
|
+ "port": 443,
|
|
|
+ "tls_verify": true
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
规则支持:
|
|
|
- `contains`
|
|
|
- `equals`
|