Files
planet/docs/technical/zh/location-pipeline-user.md
linkong e1984c7a35 release: bump version to 0.49.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 17:42:27 +08:00

128 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Earth 位置候选采集使用手册
位置候选采集用于给 Earth 上的算力中心和 BGP 观测站补齐或核验经纬度。它不会要求用户手工输入坐标,而是把源数据、开放组织注册 API 和在线地理编码结果整理成候选列表,供用户预览和后续认领。
## 适用对象
当前支持:
- 算力中心TOP500 超算、Epoch AI GPU 集群。
- BGP 观测站RIPE RIS `rrcXX` collector。
BGP 事件的位置默认继承所属 collector。事件本身暂不提供单独按钮后续 ASN 设施、Prefix 地理位置或 PeeringDB 算法接入后会继续走同一条管线。
## 用户能看到什么
在 Earth 上点击算力中心或 BGP 观测站后,详情卡会展示位置相关字段:
| 字段 | 含义 |
| --- | --- |
| 位置精度 | `精确坐标``站点级位置``城市级位置``位置未确认` |
| 位置来源 | 源数据坐标、ROR 组织注册 API、Nominatim 在线搜索,或已存储的 BGP collector 维表位置 |
| 位置置信度 | 后端 resolver 给出的相对置信度百分比 |
| 核验状态 | 已确认、估算位置或在线检索结果待确认 |
| 解析依据 | 为什么选择这个位置,例如匹配了哪个站点或城市 |
| 匹配的位置名称 | 开放来源、在线结果或已存储 collector 位置中的规范名称 |
| 位置核验时间 | 已确认位置的核验日期,在线候选通常为空 |
算力中心 GeoJSON 不再渲染国家质心、未知位置或 `[0, 0]` 占位点。无法达到城市级精度的数据会进入接口的 `unresolved` 列表,并在图层开关左上角显示待定位数量。点击这个通知气泡会打开待定位列表。
地图上带 `?` 的算力中心不是 `unresolved`。它们已经有坐标,只是 `needs_confirmation=true` 或来自在线地理编码,仍需人工核验。真正 `unresolved` 的记录没有可信经纬度,因此不会出现在地球上。
## 自动采集候选
1. 打开 `http://localhost:3000/earth`
2. 打开 `算力中心``BGP 观测` 图层。
3. 点击目标对象打开详情卡。
4. 点击 `自动采集坐标候选``重新自动采集坐标`
5. 等待详情卡列出最多 5 个候选位置。
6. 点击候选行里的 `预览`Earth 会飞到该候选经纬度附近。
候选列表会显示:
- 候选名称。
- 精度:精确、站点或城市。
- 来源 resolver。
- 置信度。
- 经纬度。
点击候选行里的 `保存` 会把所选候选写入算力中心位置维表。保存成功后,算力中心图层会刷新;如果该记录原本在待定位列表中,待定位数量也会减少。
## 待定位列表和一键采用
算力中心图层按钮左上角的通知气泡显示当前 `unresolved` 数量。点击后会在图层面板右侧打开固定列表:
1. 列表只包含没有可信经纬度的算力中心。
2. 单条 `采集` 会调用候选接口,并展示最多 5 个候选供预览和保存。
3. 顶部 `一键采用` 会从上到下逐条采集候选,选择置信度最高且有有效经纬度的候选保存。
4. 成功保存一条后,该行会立即从列表中移除,下面的序号自动上移,通知气泡数量同步减少。
5. 批量结束后,前端会刷新算力中心图层,确保 UI 和后端真实状态一致。
如果某条记录没有任何可保存候选,系统不会用国家中心点、厂商总部或硬编码 hint 伪造位置。该记录会留在列表中,并显示后端返回的失败原因和已尝试查询,等待人工补充更可靠的地址或坐标证据。
## 后端接口
前端按钮调用的接口如下:
```http
POST /api/v1/visualization/compute-centers/{source_id}/collect-location
POST /api/v1/visualization/compute-centers/{source_id}/location
POST /api/v1/bgp/collectors/{collector_id}/collect-location
```
两个 `collect-location` 接口返回相同结构:
```json
{
"success": true,
"candidates": [],
"best_candidate": {},
"attempted_queries": [],
"context": {}
}
```
当没有候选达到城市级精度时,`success``false`,响应会包含 `failure_reason` 和已尝试的查询文本,便于判断是源数据字段不足、开放来源缺项,还是在线地理编码没有命中。
## 数据维护建议
算力中心和 BGP 观测站都不再维护本地候选注册表。算力中心的人工确认位置保存在 `compute_center_locations` 数据库维表中,唯一键是 `(source, source_id)`BGP 观测站的当前位置保存在 `bgp_collector_locations` 数据库维表中,旧 RIPE RIS 城市级坐标只作为初始化 seed 写入,默认仍需人工核验。
维护算力中心时优先补齐:
- `source` / `source_id`:例如 `top500` + `top500_50`
- `name` / `operator` / `site`
- `city` / `country`
- `latitude` / `longitude`
- `precision``precise``site``city`
- `confidence`0 到 1 的置信度。
- `location_source` / `source_url` / `source_note` / `raw_payload`:证据来源。
- `needs_confirmation` / `verification_status` / `verified_at`:人工核验状态和日期。
维护 BGP 观测站时优先补齐:
- `collector_id`:例如 `rrc12`
- `site` / `operator`:站点和运营方。
- `city` / `country` / `region`
- `latitude` / `longitude`
- `precision``precise``site``city`
- `confidence`0 到 1 的置信度。
- `source` / `source_url` / `raw_payload`:证据来源。
- `verification_status` / `verified_at`:人工核验状态和日期。
如果只是知道城市,不知道设施坐标,应使用城市级精度,不要填一个看似精确但无法核验的点位。
## 常见问题
### 为什么有些算力中心不显示在 Earth 上
Earth 只渲染达到城市级或更高精度的坐标。源数据没有坐标、已验证位置没有命中、在线搜索也没有城市级结果时,记录会进入 `unresolved`,避免在地图上出现误导性的国家中心点或 `[0, 0]`
### 为什么在线搜索结果显示“待确认”
Nominatim/OpenStreetMap 结果来自在线地理编码,可能匹配到同名城市、机构或园区。它可以用于快速定位和预览,但在写入已验证位置前应人工确认。
### 为什么 BGP 事件没有全部落到 Amsterdam
旧逻辑中,事件可能因为 `operator="RIPE NCC"` 这种通用字段误匹配到 `rrc00`。当前 BGP 事件继承只按所属 collector 在 DB-backed cache 中严格查找,不再用 registry 模糊匹配。