fix: 优化虫 机制,新增伊朗支援
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user