Единый рейтинг вместо группового #80

Closed
opened 2026-09-15 00:10:46 +03:00 by Agent · 3 comments
Collaborator

Проблема

После #23 рейтингов у игрока два: общий (по всем партиям приложения) и групповой (только по партиям группы, отдельная цепочка со своим K). Это неинтуитивно:

  • у одного игрока одновременно разные числа в профиле и в группе;
  • непонятно, какое изменение показывает история партий (#77);
  • опытный игрок в новой группе считается новичком (K = 64 по партиям внутри группы);
  • рейтинги разных групп несравнимы, и незнакомым людям не видно, против кого они играют.

Решение владельца (2026-09-15)

  • Рейтинг один и общий везде: групповая цепочка убирается.
  • Главная и профиль — общие показатели (игры, победы, винрейт, среднее место — по всем партиям).
  • Страница группы — показатели группы (игры, победы, винрейт, среднее место — по партиям этой группы), рейтинг — общий.

Что сделать

  • Бэкенд: убрать групповую цепочку. Список игроков группы (текущие участники, #76) показывает групповые игры/победы/винрейт/среднее место и общий рейтинг; порядок — по общему рейтингу.
  • Статус «Новичок» (неподтверждённый рейтинг, меньше MIN_GAMES) — по общему числу партий, раз рейтинг общий.
  • Участники, не игравшие в группе, остаются в блоке «Ещё не играли», но с общим рейтингом, если он у них есть.
  • Главная: блок «Активная группа» — рейтинг в ответе общий (игры/победы в нём по группе — это блок о группе).
  • Справка: вместо «Общий и групповой рейтинг» — пояснение, что рейтинг единый, а на странице группы остальные показатели групповые.
  • Документ docs/rating/rating-system.md, раздел 8 «Расчёт» (там записаны две цепочки) и раздел 9 — отметить решение.
  • Тесты: групповая цепочка → единый рейтинг в группе; ветеран в новой группе не новичок.

Что ломается

Числа рейтинга на странице группы меняются: вместо группового показывается общий. Данные не трогаются, миграции нет.

Обнаружено при обсуждении #76/#77.

## Проблема После #23 рейтингов у игрока два: общий (по всем партиям приложения) и групповой (только по партиям группы, отдельная цепочка со своим K). Это неинтуитивно: - у одного игрока одновременно разные числа в профиле и в группе; - непонятно, какое изменение показывает история партий (#77); - опытный игрок в новой группе считается новичком (K = 64 по партиям внутри группы); - рейтинги разных групп несравнимы, и незнакомым людям не видно, против кого они играют. ## Решение владельца (2026-09-15) - **Рейтинг один и общий везде**: групповая цепочка убирается. - **Главная и профиль** — общие показатели (игры, победы, винрейт, среднее место — по всем партиям). - **Страница группы** — показатели группы (игры, победы, винрейт, среднее место — по партиям этой группы), рейтинг — общий. ## Что сделать - [ ] Бэкенд: убрать групповую цепочку. Список игроков группы (текущие участники, #76) показывает групповые игры/победы/винрейт/среднее место и **общий** рейтинг; порядок — по общему рейтингу. - [ ] Статус «Новичок» (неподтверждённый рейтинг, меньше `MIN_GAMES`) — по общему числу партий, раз рейтинг общий. - [ ] Участники, не игравшие в группе, остаются в блоке «Ещё не играли», но с общим рейтингом, если он у них есть. - [ ] Главная: блок «Активная группа» — рейтинг в ответе общий (игры/победы в нём по группе — это блок о группе). - [ ] Справка: вместо «Общий и групповой рейтинг» — пояснение, что рейтинг единый, а на странице группы остальные показатели групповые. - [ ] Документ `docs/rating/rating-system.md`, раздел 8 «Расчёт» (там записаны две цепочки) и раздел 9 — отметить решение. - [ ] Тесты: групповая цепочка → единый рейтинг в группе; ветеран в новой группе не новичок. ## Что ломается Числа рейтинга на странице группы меняются: вместо группового показывается общий. Данные не трогаются, миграции нет. Обнаружено при обсуждении #76/#77.
Agent added this to the v1.5 — изменение системы подсчёта рейтинга milestone 2026-09-15 00:10:46 +03:00
Agent added the Kind/Enhancement label 2026-09-15 00:10:46 +03:00
Agent self-assigned this 2026-09-15 00:10:51 +03:00
Agent added the
Reviewed
Confirmed
1
label 2026-09-15 00:10:52 +03:00
Author
Collaborator

План выполнения

  1. Групповая цепочка убирается: рейтинг везде берётся из одного проигрывания всей истории.
  2. Список игроков группы (текущие участники): игры, победы, винрейт и среднее место — по партиям группы; рейтинг — общий. Порядок — по общему рейтингу.
  3. Ранжированный или «Новичок» — по общему числу партий: статус описывает надёжность рейтинга, а он общий. Опытный игрок в новой группе не новичок.
  4. «Ещё не играли» (0 партий в группе) показывают общий рейтинг, если он есть. Чтобы цвет (золото/серебро) был верным и там, в строку топа добавляется признак rating_confirmed.
  5. Главная: блок «Активная группа» — игры/победы по группе, рейтинг общий. Профиль уже целиком общий.
  6. Справка: карточка «Общий и групповой рейтинг» заменяется пояснением про единый рейтинг. В документе рейтинга — разделы 8 и 9.
  7. Тесты: в группе score равен общему, а игры групповые; ветеран в новой группе ранжирован; не игравший в группе показан с общим рейтингом.

Критерии готовности

  • Рейтинг в группе, на главной и в профиле одинаковый.
  • Показатели в группе — групповые, на главной и в профиле — общие.
  • pytest и npm run build зелёные.

Ветка: issue-80-single-rating от dev

## План выполнения 1. Групповая цепочка убирается: рейтинг везде берётся из одного проигрывания всей истории. 2. Список игроков группы (текущие участники): игры, победы, винрейт и среднее место — по партиям группы; рейтинг — общий. Порядок — по общему рейтингу. 3. Ранжированный или «Новичок» — по **общему** числу партий: статус описывает надёжность рейтинга, а он общий. Опытный игрок в новой группе не новичок. 4. «Ещё не играли» (0 партий в группе) показывают общий рейтинг, если он есть. Чтобы цвет (золото/серебро) был верным и там, в строку топа добавляется признак `rating_confirmed`. 5. Главная: блок «Активная группа» — игры/победы по группе, рейтинг общий. Профиль уже целиком общий. 6. Справка: карточка «Общий и групповой рейтинг» заменяется пояснением про единый рейтинг. В документе рейтинга — разделы 8 и 9. 7. Тесты: в группе `score` равен общему, а игры групповые; ветеран в новой группе ранжирован; не игравший в группе показан с общим рейтингом. **Критерии готовности** - Рейтинг в группе, на главной и в профиле одинаковый. - Показатели в группе — групповые, на главной и в профиле — общие. - `pytest` и `npm run build` зелёные. **Ветка:** `issue-80-single-rating` от `dev`
Agent added the
Status
In Review
label 2026-09-15 00:19:17 +03:00
Author
Collaborator

Работа выполнена, открыт PR: #81

Итог: рейтинг у игрока один. На странице группы игры, победы, винрейт и среднее место — по партиям группы, рейтинг и статус «Новичок» — общие. Главная и профиль — общие показатели. Справка и документ рейтинга обновлены.
Проверки:

  • pytest — 193 passed;
  • gen:api и npm run build — зелёные;
  • HTTP на копии dev-БД: рейтинг в группе совпадает с общим топом у всех игроков.

Вёрстка в браузере не проверена: расширение Chrome не подключено.
Статус: Status/In Review
Осталось за вами: ревью и мёрж PR — задача закроется автоматически.

Работа выполнена, открыт PR: https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/81 **Итог:** рейтинг у игрока один. На странице группы игры, победы, винрейт и среднее место — по партиям группы, рейтинг и статус «Новичок» — общие. Главная и профиль — общие показатели. Справка и документ рейтинга обновлены. **Проверки:** - `pytest` — 193 passed; - `gen:api` и `npm run build` — зелёные; - HTTP на копии dev-БД: рейтинг в группе совпадает с общим топом у всех игроков. Вёрстка в браузере не проверена: расширение Chrome не подключено. **Статус:** `Status/In Review` **Осталось за вами:** ревью и мёрж PR — задача закроется автоматически.
Author
Collaborator

В PR #81 добавлен коммит 1e04f13 — исправление «пустых» партий в профиле Ivan.

Причина 1. Dev-удаление аккаунта оставило партии 2, 3, 6, 7 с единственным участником. Они считались играми с ΔR 0.0, показывались в истории и получили last_standing из бэкфилла 0014. Теперь партия меньше чем с двумя участниками не попадает ни в рейтинг, ни в истории и списки (админка её видит). Бэкфилл 0014 требует хотя бы двух участников.
Причина 2. «Партия не найдена» — это 403 для зрителя, который не состоит в группе партии. Страница теперь так и пишет.
Проверки:

  • pytest — 194 passed;
  • npm run build — зелёный;
  • на копии dev-БД партий 6 и 7 в истории Ivan больше нет.

Статус: Status/In Review

В PR https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/81 добавлен коммит `1e04f13` — исправление «пустых» партий в профиле Ivan. **Причина 1.** Dev-удаление аккаунта оставило партии 2, 3, 6, 7 с единственным участником. Они считались играми с ΔR 0.0, показывались в истории и получили `last_standing` из бэкфилла 0014. Теперь партия меньше чем с двумя участниками не попадает ни в рейтинг, ни в истории и списки (админка её видит). Бэкфилл 0014 требует хотя бы двух участников. **Причина 2.** «Партия не найдена» — это 403 для зрителя, который не состоит в группе партии. Страница теперь так и пишет. **Проверки:** - `pytest` — 194 passed; - `npm run build` — зелёный; - на копии dev-БД партий 6 и 7 в истории Ivan больше нет. **Статус:** `Status/In Review`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NotBigGhost/ForbiddenStarsApp#80