37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
import os
|
|
|
|
|
|
async def dispatch_assign_once_flow(client):
|
|
"""
|
|
调用新的一键派单接口:
|
|
GET {DISPATCH_BASE_URL}/assign
|
|
Header: X-API-Key
|
|
"""
|
|
base_url = os.getenv("DISPATCH_BASE_URL", "http://1.12.50.92:8006").strip().rstrip("/")
|
|
api_key = os.getenv("DISPATCH_API_KEY", "tuhui_dispatch_key_2026").strip()
|
|
timeout_s = float(os.getenv("DISPATCH_TIMEOUT_SECONDS", "5"))
|
|
if not base_url or not api_key:
|
|
return {"success": False, "reason": "dispatch config missing"}
|
|
try:
|
|
import httpx
|
|
|
|
async with httpx.AsyncClient(timeout=timeout_s) as http_client:
|
|
resp = await http_client.get(
|
|
f"{base_url}/assign",
|
|
headers={"X-API-Key": api_key},
|
|
)
|
|
if resp.status_code != 200:
|
|
return {"success": False, "reason": f"http {resp.status_code}"}
|
|
data = resp.json() if resp.content else {}
|
|
ok = bool((data or {}).get("success", False))
|
|
return {
|
|
"success": ok,
|
|
"task_id": str((data or {}).get("task_id", "") or ""),
|
|
"assigned_to": str((data or {}).get("assigned_to", "") or ""),
|
|
"online_count": int((data or {}).get("online_count", 0) or 0),
|
|
"notification_sent": bool((data or {}).get("notification_sent", False)),
|
|
"raw": data,
|
|
}
|
|
except Exception as e:
|
|
return {"success": False, "reason": str(e)}
|