added docs

This commit is contained in:
2026-06-22 06:50:13 +00:00
parent 99565ca107
commit 166b9eb4f9
30 changed files with 5912 additions and 3380 deletions
+46
View File
@@ -61,6 +61,7 @@ TOOLS_SKIP_CHAT_NOTICE = frozenset({
"recall_memories",
"get_fitness_summary",
"get_fitness_history",
"compare_fitness_days",
"lookup_food",
"lookup_exercise",
"calc_fitness_targets",
@@ -191,6 +192,51 @@ def format_tool_notice(tool_name: str, raw_result: str) -> str | None:
w = data.get("water", {})
return f"💪 **Вода** +{w.get('amount_ml')} мл"
if tool_name == "log_steps" and data.get("ok"):
s = data.get("step_log", {})
replaced = " (замена за день)" if data.get("replaced") else ""
return f"💪 **Шаги** {s.get('steps', 0):,} шаг.{replaced}".replace(",", " ")
if tool_name == "delete_fitness_log" and data.get("ok"):
kind = data.get("kind", "")
deleted = data.get("deleted") or {}
if kind == "meal":
return f"💪 **Удалено** · {deleted.get('description')} · {deleted.get('calories', 0):.0f} ккал"
if kind == "water":
return f"💪 **Удалено** · вода {deleted.get('amount_ml')} мл"
if kind == "steps":
return f"💪 **Удалено** · {deleted.get('steps', 0)} шаг."
if kind == "workout":
return f"💪 **Удалено** · {deleted.get('title')}"
log_id = data.get("log_id")
return f"💪 **Удалено** · {kind} #{log_id}"
if tool_name == "update_fitness_log" and data.get("ok"):
if data.get("meal"):
m = data["meal"]
return (
f"💪 **Исправлено** · {m.get('description')} · "
f"{m.get('calories', 0):.0f} ккал "
f"(Б{m.get('protein_g', 0):.0f}/Ж{m.get('fat_g', 0):.0f}/"
f"У{m.get('carbs_g', 0):.0f}/Кл{m.get('fiber_g', 0):.0f})"
)
if data.get("water"):
return f"💪 **Исправлено** · вода {data['water'].get('amount_ml')} мл"
if data.get("step_log"):
return f"💪 **Исправлено** · {data['step_log'].get('steps', 0)} шаг."
return "💪 **Запись обновлена**"
if tool_name == "merge_fitness_logs" and data.get("ok"):
kind = data.get("kind", "")
merged = data.get("merged") or {}
if kind == "meal":
return f"💪 **Объединено** · {merged.get('description')} · {merged.get('calories', 0):.0f} ккал"
if kind == "water":
return f"💪 **Объединено** · вода {merged.get('amount_ml')} мл"
if kind == "steps":
return f"💪 **Объединено** · {merged.get('steps', 0)} шаг."
return "💪 **Записи объединены**"
if tool_name == "log_weight" and data.get("ok"):
m = data.get("metric", {})
computed = data.get("computed") or {}
+8
View File
@@ -55,6 +55,13 @@ _DOMAIN_KEYWORDS: dict[str, tuple[str, ...]] = {
logger = logging.getLogger(__name__)
DOCUMENT_CITATION_HINT = (
"Если пользователь спрашивает по загруженным документам, ГОСТам, ТЗ, инструкциям "
"или проектной документации, используй tool search_documents. В ответе указывай "
"источники из результата: название документа и source_ref, страницу или раздел. "
"Если подходящий фрагмент не найден, скажи об этом явно и не выдумывай пункт документа."
)
def _build_messages_for_session(session_id: int, user_id: int) -> list[dict[str, Any]]:
db = SessionLocal()
@@ -200,6 +207,7 @@ class ChatService:
),
format_pomodoro_context(status),
self._optional_domain("projects", user_query, lambda: projects_snapshot, format_projects_context),
DOCUMENT_CITATION_HINT,
]
return "\n\n".join(part for part in parts if part.strip())