aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/admin
AgeCommit message (Collapse)Author
2026-03-21feat(admin): add bulk restart page for all gamesnsfisis
終了したゲームを一括で multiplayer に変更し、main player を 全削除して再スタートするための管理画面を /admin/restart に追加。 観戦者参加時のカンニング防止が目的。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-28feat(admin): show play/watch links for non-public gamesnsfisis
Admin games list page already shows all games including non-public ones, but play/watch links were hidden behind an IsPublic check. Since this is an admin-only page, always show the links. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24fix(admin): show username in submissions and add testcase links to problems listClaude
Submissions list and detail pages now display the username alongside the user ID instead of showing only a numeric ID. The problems list page now includes a direct link to each problem's testcases for easier navigation. https://claude.ai/code/session_01JF5ZmGAQ4zNbhV5DM729Fw
2026-02-21refactor: rename stuttering exported types in game and tournament packagesnsfisis
Fix golangci-lint revive warnings by removing package name prefixes: - game.GameHubInterface → game.HubInterface - game.GameDetail → game.Detail - tournament.TournamentEntry → tournament.Entry - tournament.TournamentMatch → tournament.Match - tournament.TournamentBracket → tournament.Bracket - tournament.TournamentEditData → tournament.EditData Also fix gofmt alignment in api/convert.go and gosimple S1016 in game/service.go. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21refactor(admin): separate business logic into game and tournament servicesnsfisis
Move transaction handling, rejudge workflow, tournament bracket creation, and data repair logic from admin handler into game.Service and tournament.Service, mirroring the earlier api package separation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21refactor(api): separate business logic into game, tournament, session packagesnsfisis
Extract business logic from api/handler.go into dedicated service packages: - session: context helpers (resolves admin → api import dependency) - game: game state, code submission, ranking, watch logic - tournament: bracket construction and seed ordering - api/convert.go: domain → API type conversion functions api/handler.go is now a thin adapter that delegates to services and maps domain errors to HTTP status codes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20style(backend): modernize Go syntax with range-over-int and type inferencensfisis
Use Go 1.22+ range-over-integer syntax, replace interface{} with any, and remove redundant type parameters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20feat(admin): integrate asynqmon web UI for task queue monitoringnsfisis
Mount asynqmon HTTP handler under admin/queue with existing session cookie and admin middleware authentication. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20feat(admin): add bulk rejudge for game submissionsnsfisis
Extract common rejudge logic into a helper method and add two new endpoints: rejudge-latest (per-user latest only) and rejudge-all. This allows re-running submissions in bulk after testcase changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20feat(admin): add rejudge functionality for submissionsnsfisis
Allow administrators to re-execute test cases for a specific submission from the submission detail page. This is useful after testcase fixes or worker issues. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18feat: refactor tournament to generic DB-backed N-person bracketnsfisis
Replace hardcoded 6-person tournament with a generic single-elimination bracket system backed by new DB tables (tournaments, tournament_entries, tournament_matches). Includes admin CRUD, standard seeding algorithm, bye handling, and a CSS Grid bracket renderer on the frontend. Add comprehensive tests for backend API/admin handlers, seeding logic, and frontend bracket component. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17feat: rename iOSDC Japan 2025 references to PHPerKaigi 2026nsfisis
Replace all remaining references to the forked event name: - Base path: /iosdc-japan/2025/code-battle/ → /phperkaigi/2026/code-battle/ - Display text and HTML titles - CSS utility class: bg-iosdc-japan → bg-phperkaigi - GitHub Actions submodule path: albatross-swift-2025 → albatross-php-2026 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16test(backend): add unit tests for admin handlers and taskqueuensfisis
Add comprehensive tests for previously untested packages: - admin: middleware auth checks, CRUD handlers for users/games/problems/testcases - taskqueue: task creation, payload serialization, code hash calculation - api: expose SetUserInContext helper for cross-package test support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15refactor(backend): introduce DI interfaces for testabilitynsfisis
Replace concrete *db.Queries and *pgxpool.Pool dependencies with db.Querier and db.TxManager interfaces across all handlers, game hub, and auth. This enables unit testing with mocks. - Enable sqlc emit_interface to generate Querier interface - Add TxManager abstraction to encapsulate transactions - Convert auth package-level functions to Authenticator struct - Add TaskQueueInterface/TaskWorkerInterface for game.Hub - Add initial unit tests for game logic and API handlers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15fix(backend): resolve TODO items for transactions, validation, and error ↵nsfisis
handling - Wrap multi-step DB operations in transactions (signup, submit, game edit, task result processing) - Add game running checks to PostGamePlayCode and PostGamePlaySubmit - Hide ranking code when game is not yet finished - Replace silenced errors in processTaskResults with slog.Error logging - Add pgxpool.Pool to Handler/Hub structs for transaction support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15refactor(log): migrate from log to log/slog for structured loggingnsfisis
Replace all usages of the standard log package with log/slog across backend and swift worker. Configure Echo's request logger to emit structured log attributes via slog instead of the default format. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15refactor(auth): replace JWT authentication with server-side sessionsnsfisis
Migrate from stateless JWT tokens to server-side session management backed by PostgreSQL. Sessions are hashed with SHA-256 before storage, cleaned up periodically, and invalidated on logout. This removes the need for JWT_SECRET/COOKIE_SECRET environment variables and the golang-jwt dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13refactor: rename module/package namensfisis
2025-09-17feat(backend): add admin pages for submissionsnsfisis
2025-09-16feat(backend): prevent game from starting without testcasesnsfisis
2025-09-06fix(backend): qualifying ranking tablensfisis
2025-09-06fix(backend): duplicate slashes in some URLsnsfisis
2025-09-06feat(backend): update qualifying ranking pagensfisis
2025-09-06feat(backend): restore /admin/fixnsfisis
2025-09-06feat(backend): add admin pages for testcasesnsfisis
2025-09-06feat(backend): add admin page for game creationnsfisis
2025-09-06feat(backend): add admin page for problemsnsfisis
2025-08-17feat: update "PHPerKaigi" to "iOSDC Japan"nsfisis
2025-08-14feat(backend,frontend): Replace hard-coded base path with environment variablensfisis
2025-04-02fix(backend): fix pathsnsfisis
2025-04-02feat(backend): add admin tool to fix submission statusnsfisis
2025-03-21fix(backend): fix various admin featuresnsfisis
2025-03-20fix(backend): fix online qualifying rankingnsfisis
2025-03-20feat(backend): allow admin to edit game started_atnsfisis
2025-03-20feat(backend): add /admin/online-qualifying-rankingnsfisis
2025-03-17refactor(backend): remove unused fieldnsfisis
2025-03-15feat(backen): allow admin to edit main playersnsfisis
2025-03-12feat(backend): implement user edit pagensfisis
2025-03-12feat(backend): change is_public input to checkbox in game edit pagensfisis
2025-03-12fix(backend): treat started_at of game edit page as time in JSTnsfisis
2025-03-11feat: show user labelnsfisis
2025-03-08game start buttonnsfisis
2025-03-08websocket to pollingnsfisis
2025-03-04update site namensfisis
2025-03-04rm audio featurensfisis
2025-03-04change base pathnsfisis
2025-03-04update go package namesnsfisis
2024-08-21feat(backend): add /admin/audio pagensfisis
2024-08-19refactor(backend): do not hard-code base pathnsfisis
2024-08-18feat(backend): add the link to game watch page to admin game list pagensfisis