История в профиле грузится страницами по 20, под списком — кнопка «Показать ещё». Раньше запрос уходил без limit/offset, бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировали total: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка на обрезку.
Постранично, а не одним большим запросом: у эндпоинта потолок limit=100, поэтому «поднять лимит» вернуло бы ту же проблему на 101-й партии. Использован useInfiniteQuery, ключ qk.userMatches(id) не менялся — инвалидация из matchAffectedKeys продолжает работать, просто перезапрашивает загруженные страницы.
Кнопка живёт в самом MatchHistory, поэтому появилась разом в своём профиле и в чужом, и в обоих режимах подробности (компактном и полном). Счётчика рядом с ней нет — как вы и просили.
Общее число партий вынесено наверх, в шапку профиля под ник: «Партий: N», и в своём профиле, и в чужом. Источник — статистика, а не total истории: в режиме «только лучшая партия» total равен единице, и счётчик показывал бы «Партий: 1».
Коммиты
f2aaa2a Профиль: догрузка истории и счётчик партий в шапке
Проверки
npm run build (tsc --noEmit + vite build) — зелёный
pytest — 91 passed (бэкенд не менялся, прогон как страховка)
API не трогал: limit/offset у эндпоинта уже были, schema.d.ts не перегенерировался
Ручной прогон в dev не делал — стенд был занят; кнопку и счётчик стоит посмотреть глазами при ревью.
## Что сделано
История в профиле грузится страницами по 20, под списком — кнопка **«Показать ещё»**. Раньше запрос уходил без `limit`/`offset`, бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировали `total`: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка на обрезку.
Постранично, а не одним большим запросом: у эндпоинта потолок `limit=100`, поэтому «поднять лимит» вернуло бы ту же проблему на 101-й партии. Использован `useInfiniteQuery`, ключ `qk.userMatches(id)` не менялся — инвалидация из `matchAffectedKeys` продолжает работать, просто перезапрашивает загруженные страницы.
Кнопка живёт в самом `MatchHistory`, поэтому появилась разом в своём профиле и в чужом, и в обоих режимах подробности (компактном и полном). Счётчика рядом с ней нет — как вы и просили.
**Общее число партий** вынесено наверх, в шапку профиля под ник: «Партий: N», и в своём профиле, и в чужом. Источник — статистика, а не `total` истории: в режиме «только лучшая партия» `total` равен единице, и счётчик показывал бы «Партий: 1».
## Коммиты
- `f2aaa2a` Профиль: догрузка истории и счётчик партий в шапке
## Проверки
- `npm run build` (tsc --noEmit + vite build) — зелёный
- `pytest` — 91 passed (бэкенд не менялся, прогон как страховка)
- API не трогал: `limit`/`offset` у эндпоинта уже были, `schema.d.ts` не перегенерировался
Ручной прогон в dev не делал — стенд был занят; кнопку и счётчик стоит посмотреть глазами при ревью.
## Отклонения от плана
Нет.
Closes #30
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
История запрашивалась без limit/offset, поэтому бэкенд отдавал первые 20 партий, а
страницы рисовали их и молча игнорировали total: у игрока с 40 партиями половина
истории просто не существовала — ни кнопки, ни намёка.
Теперь история грузится страницами по 20, под списком — «Показать ещё». Постранично,
а не одним большим запросом: у эндпоинта потолок limit=100, и на 101-й партии
обрезка вернулась бы. Кнопка живёт в самом компоненте истории, поэтому появилась
сразу и в своём профиле, и в чужом, и в обоих режимах подробности.
Общее число партий вынесено в шапку профиля, к нику. Берём его из статистики, а не
из total истории: в режиме «только лучшая партия» total равен единице, и счётчик
показывал бы «Партий: 1».
#30
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что сделано
История в профиле грузится страницами по 20, под списком — кнопка «Показать ещё». Раньше запрос уходил без
limit/offset, бэкенд отдавал первые 20 партий, а страницы рисовали их и молча игнорировалиtotal: у игрока с 40 партиями половина истории просто не существовала — ни кнопки, ни намёка на обрезку.Постранично, а не одним большим запросом: у эндпоинта потолок
limit=100, поэтому «поднять лимит» вернуло бы ту же проблему на 101-й партии. ИспользованuseInfiniteQuery, ключqk.userMatches(id)не менялся — инвалидация изmatchAffectedKeysпродолжает работать, просто перезапрашивает загруженные страницы.Кнопка живёт в самом
MatchHistory, поэтому появилась разом в своём профиле и в чужом, и в обоих режимах подробности (компактном и полном). Счётчика рядом с ней нет — как вы и просили.Общее число партий вынесено наверх, в шапку профиля под ник: «Партий: N», и в своём профиле, и в чужом. Источник — статистика, а не
totalистории: в режиме «только лучшая партия»totalравен единице, и счётчик показывал бы «Партий: 1».Коммиты
f2aaa2aПрофиль: догрузка истории и счётчик партий в шапкеПроверки
npm run build(tsc --noEmit + vite build) — зелёныйpytest— 91 passed (бэкенд не менялся, прогон как страховка)limit/offsetу эндпоинта уже были,schema.d.tsне перегенерировалсяРучной прогон в dev не делал — стенд был занят; кнопку и счётчик стоит посмотреть глазами при ревью.
Отклонения от плана
Нет.
Closes #30
🤖 Generated with Claude Code
https://claude.ai/code/session_01BoiJK9ux8peeyjLb8TYjFf