feat(ext-data): 出站请求默认携带 tsp 标识头

扩展数据的三个出站点 (定时/手动拉取与历史回补、内置预设拉取、URL 探测
测试) 统一经 outbound_headers() 注入 User-Agent: tsp/<版本> 与
X-TSP-Client: tick-stock-panel, 服务端 (如 tickflow-hub) 可据此识别
本项目的请求来源。

用户在拉取配置里显式设置的同名请求头优先 (大小写不敏感匹配, 不重复
发送), 需要特定 UA 的数据源不受影响。

验证: pytest 22/22 (含 3 个新用例: 默认标识头/用户头优先/实际请求携带);
逐文件 ruff 与 HEAD 对比零新增。
This commit is contained in:
shy3130
2026-09-06 23:16:27 +08:00
parent d949d9618c
commit ddb265b0f8
5 changed files with 71 additions and 5 deletions
+2 -2
View File
@@ -864,13 +864,13 @@ async def test_pull(request: Request, config_id: str):
raise HTTPException(400, "拉取未配置或 URL 为空")
# 临时构建一个带新配置的 config 用于测试
from app.services.ext_pull import _extract_rows, _apply_field_map
from app.services.ext_pull import _extract_rows, _apply_field_map, outbound_headers
import httpx
pull = config.pull
try:
async with httpx.AsyncClient(timeout=30) as client:
headers = pull.headers or {}
headers = outbound_headers(pull.headers)
kwargs: dict = {"headers": headers}
if pull.method.upper() == "POST" and pull.body:
kwargs["content"] = pull.body