Files
agent_jrxml/backend/validation.py
T

42 lines
1.4 KiB
Python

"""FastAPI 验证服务的客户端。"""
import os
import httpx
from dotenv import load_dotenv
from backend.logger import get_logger
load_dotenv(override=True)
_val_log = get_logger("validation")
VALIDATION_URL = os.getenv("VALIDATION_SERVICE_URL", "http://localhost:8001/validate")
def validate_jrxml(jrxml_text: str) -> dict:
"""将 JRXML 发送到验证服务并返回 {valid: bool, error: str}。"""
jrxml_length = len(jrxml_text)
try:
with httpx.Client(timeout=30.0) as client:
resp = client.post(VALIDATION_URL, json={"jrxml": jrxml_text})
resp.raise_for_status()
result = resp.json()
_val_log.info(
"验证完成",
extra={
"valid": result.get("valid"),
"error": result.get("error", ""),
"jrxml_length": jrxml_length,
},
)
return result
except httpx.ConnectError:
error_msg = f"无法连接到验证服务 ({VALIDATION_URL})。是否正在运行?"
_val_log.error("验证服务连接失败", extra={"error": error_msg, "url": VALIDATION_URL})
return {"valid": False, "error": error_msg}
except Exception as e:
error_msg = f"验证请求失败: {str(e)}"
_val_log.error("验证请求异常", extra={"error": str(e), "url": VALIDATION_URL})
return {"valid": False, "error": error_msg}