added mesuurments

This commit is contained in:
2026-06-26 07:52:07 +03:00
parent 166b9eb4f9
commit 1313a12a20
11 changed files with 238 additions and 116 deletions
+26
View File
@@ -10,6 +10,7 @@ from app.tools._dispatch import NOT_HANDLED, ToolContext
TOOL_NAMES = frozenset({
"get_fitness_summary",
"get_fitness_history",
"get_body_metrics",
"compare_fitness_days",
"set_fitness_profile",
"calc_fitness_targets",
@@ -25,6 +26,7 @@ TOOL_NAMES = frozenset({
"lookup_food",
"lookup_exercise",
"set_fitness_reminder",
"get_body_metrics",
})
TOOL_DEFINITIONS: list[dict[str, Any]] = [
@@ -49,6 +51,26 @@ TOOL_DEFINITIONS: list[dict[str, Any]] = [
},
},
},
{
"type": "function",
"function": {
"name": "get_body_metrics",
"description": (
"История антропометрии: вес, % жира, обхваты, WHR, FFMI по датам. "
"«Как менялся вес», «динамика жира», «прошлые замеры», «что было месяц назад»."
),
"parameters": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Сколько последних записей, по умолчанию 20, макс. 50",
},
},
"required": [],
},
},
},
{
"type": "function",
"function": {
@@ -407,6 +429,10 @@ async def execute(name: str, arguments: dict[str, Any], ctx: ToolContext) -> Any
elif arguments.get("days_ago") is not None:
day = datetime.now(timezone.utc).date() - timedelta(days=int(arguments["days_ago"]))
return fitness.get_daily_summary(day)
if name == "get_body_metrics":
limit = max(1, min(int(arguments.get("limit") or 20), 50))
metrics = fitness.list_body_metrics(limit=limit)
return {"metrics": metrics, "count": len(metrics)}
if name == "get_fitness_history":
end_day = None
if arguments.get("end_date"):