from langchain_core.tools import tool from app.tools.java_client import JavaClient import logging logger = logging.getLogger(__name__) _java = JavaClient() @tool async def get_report_detail(report_id: int) -> str: """获取健康报告的完整详情, 包含各维度评分和解读""" try: client = _java resp = await client._get_client().post( "/api/health/report/detail", json={"reportId": report_id}, ) data = resp.json() if data.get("code") == 200: import json return json.dumps(data.get("data", {}), ensure_ascii=False) return "{}" except Exception as e: logger.warning("获取报告详情失败: %s", e) return "{}" @tool async def get_survey_data(report_id: int) -> str: """获取与报告关联的调研问卷数据""" try: client = _java resp = await client._get_client().post( "/api/survey/completed", json={"reportId": report_id}, ) data = resp.json() if data.get("code") == 200: import json return json.dumps(data.get("data", {}), ensure_ascii=False) return "{}" except Exception as e: logger.warning("获取问卷数据失败: %s", e) return "{}" @tool async def get_dimension_scores(family_id: int) -> str: """获取家庭成员的五维能量分数 (身/心/智/行/富)""" try: client = _java resp = await client._get_client().post( "/api/dimension/scores", json={"familyId": family_id}, ) data = resp.json() if data.get("code") == 200: import json return json.dumps(data.get("data", {}), ensure_ascii=False) return "{}" except Exception as e: logger.warning("获取维度分数失败: %s", e) return "{}"