Историю партий нельзя править после смены состава группы или набора дополнений (#29) #39

Merged
NotBigGhost merged 1 commits from issue-29-edit-finished-match into dev 2026-09-09 20:18:46 +03:00
Collaborator

Что сделано

Историю снова можно чинить. Правка завершённой партии проверяла состав теми же правилами, что и создание: участник обязан состоять в группе сейчас, фракция — быть доступной сейчас. Отключили дополнение — и партию, сыгранную на Тау, уже не исправить; удалили игрока из группы — и любая партия с ним отказывается сохраняться. Теперь то, что уже записано в партии, проходит всегда, а новые игроки и фракции по-прежнему берутся только из текущего состава группы. Занести в историю постороннего нельзя, а починить опечатку — можно. Создание партии не ослабло, на это есть отдельный тест.

Игрок получил кнопку «Редактировать». Формально править завершённую партию мог любой участник группы, но только через API: на странице партии кнопки не было, и на практике это делал лишь админ через админку. Теперь у блока «Результаты» есть «Редактировать», и правка идёт тем же перетаскиванием, что и завершение — раскладка восстанавливается из сохранённых мест (одинаковое место = ничья, выбывшие отдельным списком), рядом фракции, причина победы и комментарии. Сохранение отправляет версию партии, так что устаревшая правка отклоняется как раньше.

Два решения по ходу:

  • фракции вынесены отдельным блоком, а не встроены в PlaceEditor — он занят перетаскиванием, и селекты внутри него добавили бы риск на ровном месте;
  • в список фракций к набору группы добавляются те, что уже стоят в партии: иначе фракцию из отключённого дополнения нельзя было бы даже оставить как есть.

API не менялся — MatchUpdate уже принимал всё нужное, schema.d.ts не трогал.

Коммиты

  • 6e11f8a Партия: правка истории и кнопка «Редактировать» у игрока

Проверки

  • pytest — 91 passed (было 87; 4 новых теста в tests/test_match_edit.py): правка после отключения дополнения, правка после удаления игрока из группы, отказ на постороннего игрока и на недоступную фракцию, неослабевшая проверка при создании
  • npm run build (tsc --noEmit + vite build) — зелёный

Ручной прогон в dev не делал — стенд был занят; экран правки стоит посмотреть глазами при ревью.

Отклонения от плана

Нет.

Closes #29

🤖 Generated with Claude Code

https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf

## Что сделано **Историю снова можно чинить.** Правка завершённой партии проверяла состав теми же правилами, что и создание: участник обязан состоять в группе *сейчас*, фракция — быть доступной *сейчас*. Отключили дополнение — и партию, сыгранную на Тау, уже не исправить; удалили игрока из группы — и любая партия с ним отказывается сохраняться. Теперь то, что **уже записано в партии**, проходит всегда, а новые игроки и фракции по-прежнему берутся только из текущего состава группы. Занести в историю постороннего нельзя, а починить опечатку — можно. Создание партии не ослабло, на это есть отдельный тест. **Игрок получил кнопку «Редактировать».** Формально править завершённую партию мог любой участник группы, но только через API: на странице партии кнопки не было, и на практике это делал лишь админ через админку. Теперь у блока «Результаты» есть «Редактировать», и правка идёт тем же перетаскиванием, что и завершение — раскладка восстанавливается из сохранённых мест (одинаковое место = ничья, выбывшие отдельным списком), рядом фракции, причина победы и комментарии. Сохранение отправляет версию партии, так что устаревшая правка отклоняется как раньше. Два решения по ходу: - фракции вынесены отдельным блоком, а не встроены в `PlaceEditor` — он занят перетаскиванием, и селекты внутри него добавили бы риск на ровном месте; - в список фракций к набору группы добавляются те, что уже стоят в партии: иначе фракцию из отключённого дополнения нельзя было бы даже оставить как есть. API не менялся — `MatchUpdate` уже принимал всё нужное, `schema.d.ts` не трогал. ## Коммиты - `6e11f8a` Партия: правка истории и кнопка «Редактировать» у игрока ## Проверки - `pytest` — 91 passed (было 87; 4 новых теста в `tests/test_match_edit.py`): правка после отключения дополнения, правка после удаления игрока из группы, отказ на постороннего игрока и на недоступную фракцию, неослабевшая проверка при создании - `npm run build` (tsc --noEmit + vite build) — зелёный Ручной прогон в dev не делал — стенд был занят; экран правки стоит посмотреть глазами при ревью. ## Отклонения от плана Нет. Closes #29 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Agent added 1 commit 2026-09-09 20:16:52 +03:00
Правка завершённой партии проверяла состав теми же правилами, что и создание:
участник обязан состоять в группе сейчас, фракция — быть доступной сейчас. После
отключения дополнения партию, сыгранную на Тау, было уже не исправить, а после
удаления игрока из группы — любую партию с ним. Теперь то, что уже записано в
партии, проходит всегда, а новые игроки и фракции по-прежнему берутся только из
текущего состава: чинить историю можно, занести в неё постороннего — нет.
Создание партии не ослабло.

Править завершённую партию умел любой участник группы, но только через API —
кнопки не было, и на практике это мог сделать лишь админ через админку. Теперь у
блока «Результаты» есть «Редактировать», и правка идёт тем же перетаскиванием,
что и завершение: раскладка восстанавливается из сохранённых мест (одинаковое
место — ничья, выбывшие отдельно), рядом — фракции, причина победы и комментарии.
Сохранение шлёт версию партии, так что устаревшая правка отклоняется как раньше.

Фракции вынесены отдельным блоком, а не в PlaceEditor: он занят перетаскиванием,
и селекты внутри него — лишний риск. В списке доступных фракций к набору группы
добавляются те, что уже стоят в партии, — иначе фракцию из отключённого
дополнения нельзя было бы даже оставить как есть.

#29

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
NotBigGhost merged commit e5b3505bc2 into dev 2026-09-09 20:18:46 +03:00
NotBigGhost deleted branch issue-29-edit-finished-match 2026-09-09 20:18:47 +03:00
Sign in to join this conversation.