"""Уведомления игрока: список (pull) и отметка прочитанными. Появление в реальном времени обеспечивает SSE-сигнал `{type:"notifications"}` — по нему клиент перезапрашивает этот список. Хранение — 72 часа; протухшие чистятся при чтении (и фоном).""" from __future__ import annotations from fastapi import APIRouter, Depends from sqlmodel import Session from app.auth.deps import get_current_user from app.db.session import get_session from app.models import User from app.schemas import api as s from app.services import notification_service router = APIRouter(prefix="/notifications", tags=["notifications"]) @router.get("", response_model=s.NotificationList) def my_notifications( session: Session = Depends(get_session), user: User = Depends(get_current_user), ) -> dict: return notification_service.list_for_user(session, user.id) # type: ignore[arg-type] @router.post("/read", response_model=s.OkResponse) def mark_read( body: s.NotificationMarkRead, session: Session = Depends(get_session), user: User = Depends(get_current_user), ) -> s.OkResponse: notification_service.mark_read(session, user.id, body.ids) # type: ignore[arg-type] return s.OkResponse()