feat(#14): attendance statistics page #45

Merged
Toutsu merged 7 commits from issue-14-attendance-stats into main 2026-05-07 14:32:41 +03:00
Owner

Closes #14

Что сделано

  • SQL-функция get_group_attendance_stats для агрегированной статистики по игрокам группы.
  • DTO PlayerAttendanceStats + метод в ISessionStore и реализация в SessionService.
  • Новая страница /group/{id}/stats (GroupStats.razor) с:
    • итоговыми карточками (игроки, сессии, средняя посещаемость, самый стабильный);
    • сортируемой таблицей по всем столбцам;
    • цветными бейджами посещаемости (зелёный/жёлтый/красный).
  • Кнопка «📊 Статистика посещаемости» на странице группы (GroupDetails.razor).

Как проверить

  1. Перейти на страницу группы → нажать «Статистика посещаемости».
  2. Убедиться, что таблица отображается, сортировка работает, бейджи корректны.

Миграция

  • V012__add_attendance_stats.sql — нужно применить перед деплоем.
Closes #14 ### Что сделано - SQL-функция `get_group_attendance_stats` для агрегированной статистики по игрокам группы. - DTO `PlayerAttendanceStats` + метод в `ISessionStore` и реализация в `SessionService`. - Новая страница `/group/{id}/stats` (`GroupStats.razor`) с: - итоговыми карточками (игроки, сессии, средняя посещаемость, самый стабильный); - сортируемой таблицей по всем столбцам; - цветными бейджами посещаемости (зелёный/жёлтый/красный). - Кнопка «📊 Статистика посещаемости» на странице группы (`GroupDetails.razor`). ### Как проверить 1. Перейти на страницу группы → нажать «Статистика посещаемости». 2. Убедиться, что таблица отображается, сортировка работает, бейджи корректны. ### Миграция - `V012__add_attendance_stats.sql` — нужно применить перед деплоем.
Toutsu added 3 commits 2026-05-07 13:29:25 +03:00
Toutsu added 1 commit 2026-05-07 14:10:35 +03:00
feat: implement GetGroupAttendanceStatsAsync (#14)
PR Checks / test-and-build (pull_request) Failing after 2m57s
7e2747ec73
Toutsu added 1 commit 2026-05-07 14:16:27 +03:00
fix: move PlayerAttendanceStats out of interface scope
PR Checks / test-and-build (pull_request) Failing after 2m53s
b03929174a
The record was nested inside ISessionStore, making it ISessionStore.PlayerAttendanceStats.
C# does not infer nested types in return signatures; callers and implementors failed
with CS0246 / CS0738. Moving it to namespace scope resolves the build.
Toutsu added 1 commit 2026-05-07 14:21:44 +03:00
fix: GroupStats.razor syntax and missing using for Claims
PR Checks / test-and-build (pull_request) Failing after 3m14s
4d3362d93f
- Add @using System.Security.Claims
- Fix quotation marks in @onclick lambdas (Razor parser error CS1026)
Toutsu added 1 commit 2026-05-07 14:26:23 +03:00
fix: add GetGroupAttendanceStatsAsync stub to FakeSessionStore in tests
PR Checks / test-and-build (pull_request) Successful in 3m14s
706f20e403
Resolves CS0535 build failure in test project.
Toutsu reviewed 2026-05-07 14:32:20 +03:00
Toutsu left a comment
Author
Owner

CI passed, code reviewed. LGTM.

CI passed, code reviewed. LGTM.
Toutsu merged commit 4a2d1d2d38 into main 2026-05-07 14:32:41 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Toutsu/GmRelayBot#45