fix: 优化虫 机制,新增伊朗支援

This commit is contained in:
Daniel
2026-03-06 10:34:52 +08:00
parent 89145a6743
commit 9f2442f2e3
20 changed files with 411 additions and 62 deletions

View File

@@ -42,6 +42,7 @@ def _call_dashscope_extract(text: str, timeout: int = 15) -> Optional[Dict[str,
- retaliation_sentiment: 0-100仅当报道涉及伊朗报复情绪时
- wall_street_value: 0-100仅当报道涉及美股/市场时)
- key_location_updates: **双方攻击地点**。每项 {{"name_keywords":"阿萨德|asad","side":"us或iran被打击方","status":"attacked","damage_level":1-3}}。美军基地:阿萨德|asad、乌代德|udeid、埃尔比勒|erbil、因吉尔利克|incirlik。伊朗德黑兰|tehran、布什尔|bushehr、伊斯法罕|isfahan、阿巴斯|abbas、纳坦兹|natanz
- **map_strike_lines**(仅当报道明确为**美/以盟军打击伊朗或伊朗目标**时): 数组,每项 {{"source_id":"israel或lincoln或ford","target_lng":经度,"target_lat":纬度,"target_name":"目标名如纳坦兹","struck_at":"ISO时间"}}。以色列打击→source_id=israel林肯号→lincoln福特号→ford。目标坐标纳坦兹51.92,33.67伊斯法罕51.67,32.65德黑兰51.39,35.69布什尔50.83,28.97阿巴斯港56.27,27.18
- **导弹消耗增量**(仅当报道明确提到「发射/消耗 了 X 枚导弹」时填): us_missile_consumed_delta, iran_missile_consumed_delta本则该方新增消耗枚数整数
原文:
@@ -133,4 +134,29 @@ def extract_from_news(text: str, timestamp: Optional[str] = None) -> Dict[str, A
if valid:
out["key_location_updates"] = valid
if "map_strike_lines" in parsed and isinstance(parsed["map_strike_lines"], list):
valid_lines = []
for line in parsed["map_strike_lines"]:
if not isinstance(line, dict):
continue
sid = str(line.get("source_id") or "").strip().lower()
if sid not in ("israel", "lincoln", "ford"):
continue
try:
lng = float(line.get("target_lng", 0))
lat = float(line.get("target_lat", 0))
except (TypeError, ValueError):
continue
name = str(line.get("target_name") or "")[:200]
struck_at = str(line.get("struck_at") or ts)[:25]
valid_lines.append({
"source_id": sid,
"target_lng": lng,
"target_lat": lat,
"target_name": name or None,
"struck_at": struck_at,
})
if valid_lines:
out["map_strike_lines"] = valid_lines
return out