| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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 "{}"
|