SSE: не рассылать ratings на правки без влияния на рейтинг; событие group при смене настроек группы

- notify.match_changed получил флаг ratings: фото (игрок и админ) его не шлют, правка
  партии — только если изменились входы рейтинга (match_service.rating_inputs до/после).
- PATCH /api/groups/{id} публикует group — переименование и правило 9 раундов видны
  остальным участникам сразу.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 13:52:44 +03:00
co-authored by Claude Opus 5.5
parent 0b33b442e9
commit ef0e75aef2
6 changed files with 97 additions and 9 deletions
+21
View File
@@ -479,6 +479,27 @@ def assert_can_modify(session: Session, match: Match, user: User) -> None:
raise ForbiddenError("Недостаточно прав для изменения партии.")
def rating_inputs(session: Session, match: Match) -> tuple:
"""Снимок всего, что из партии читает рейтинг (stats_service.load_history): порядок
в истории, итоги и места. Сравнение снимков до и после правки показывает, сдвинула ли
она рейтинг, — комментарий или фото его не трогают."""
seats = session.exec(
select(MatchParticipant).where(MatchParticipant.match_id == match.id)
).all()
return (
match.status,
match.played_at,
match.finished_at,
match.win_reason,
match.end_round,
match.nine_rounds_rule,
sorted(
(p.user_id, p.faction_id, p.place, p.eliminated, p.objectives, p.worlds)
for p in seats
),
)
def update_match(
session: Session,
match: Match,