新增天文观测数据获取能力,覆盖星表查询与一维光谱下载两大场景:
星表检索(CDS VizieR)
- VizieR TAP 客户端(JSON 优先 + VOTable 降级),共享 IVOA VOTable 解析层
- 业务层支持自由 ADQL、锥形检索、交叉证认、星表发现与 CSV 导出
- ADQL 注入防护(标识符清洗 + 字符串字面量转义),TTL 缓存(7 天)
跨望远镜光谱下载(统一入口)
- 接入 LAMOST(ConeSearch + FITS.gz)、Gaia(TAP + DataLink ZIP)、
SDSS(Data Lab TAP + SAS)、DESI(HEALPix coadd)四源
- 双模式:坐标模式(cone 检索 → 选源 → 下载)/ 标识符模式(直按 ID 下载)
- 光谱文件永久缓存(不可变),按 source+source_id 去重
Agent 与 API
- +4 工具:query_vizier / cone_search / find_spectrum / catalog_operation(22 → 26)
- +6 路由:/catalog/vizier、/cone、/crossmatch、/spectrum/{download,list}
- 前端新增 VizierResultCard / FindSpectrumCard 可视化卡片
工程重构
- services/target.rs (832 行) 拆分为 services/cds/{target,vizier}.rs + clients/cds/sesame.rs,
贯彻 client(通信)/ service(缓存+编排)分层
- ADS 返回字段新增 data(关联数据表 URL),与星表功能联动
19 lines
893 B
Rust
19 lines
893 B
Rust
// src/clients/cds/mod.rs
|
||
//
|
||
// CDS(法国斯特拉斯堡天文数据中心)数据源客户端 —— 按数据源聚合
|
||
// 仅含纯通信层(HTTP 请求 + 响应解析 + 领域结构体)。
|
||
// 业务层(缓存策略、ADQL 拼装、批量编排)在 services/ 下。
|
||
//
|
||
// CDS 旗下我们用到的两个独立服务,每个一个文件:
|
||
// sesame — Sesame 名称解析器客户端(query_sesame + TargetInfo)
|
||
// vizier — VizieR TAP 客户端(VizierClient + VizieRQueryResult)
|
||
//
|
||
// VO 通用层(ConeSearch / CrossMatch)属于业务编排(ADQL 拼装 + 缓存委托),
|
||
// 位于 services/cds/vizier.rs,不在本通信层。
|
||
//
|
||
// 后续新增其他数据源(LAMOST/SDSS/Gaia 光谱光变)时,在 src/clients/ 下新建
|
||
// 同级文件夹(如 src/clients/lamost/),client 在此,业务在 services/ 下。
|
||
|
||
pub mod sesame;
|
||
pub mod vizier;
|