34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
from typing import Any
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.reminders.service import RemindersService
|
|
|
|
MAX_IN_CONTEXT = 10
|
|
|
|
|
|
def get_reminders_snapshot(db: Session, user_id: int) -> dict[str, Any]:
|
|
return RemindersService(db, user_id).snapshot()
|
|
|
|
|
|
def format_reminders_context(snapshot: dict[str, Any]) -> str:
|
|
lines = ["[Напоминания]"]
|
|
upcoming = snapshot.get("upcoming") or []
|
|
tz = snapshot.get("timezone", "Europe/Moscow")
|
|
|
|
if not upcoming:
|
|
lines.append(
|
|
"Ближайших напоминаний нет. "
|
|
"create_reminder для «напомни через 15 минут», «завтра утром», точной даты."
|
|
)
|
|
return "\n".join(lines)
|
|
|
|
lines.append(f"Часовой пояс: {tz}. Tools: list_reminders, create_reminder, update_reminder, delete_reminder, complete_reminder.")
|
|
for item in upcoming[:MAX_IN_CONTEXT]:
|
|
rec = item.get("recurrence", "none")
|
|
rec_label = f" · повтор: {rec}" if rec and rec != "none" else ""
|
|
lines.append(
|
|
f"- #{item['id']} **{item['title']}** · {item.get('due_at_local', item.get('due_at'))}{rec_label}"
|
|
)
|
|
return "\n".join(lines)
|