How 0himera/fsp-platform works
Арена ФСП Дагестана — платформа управления спортивным программированием: аккаунты спортсменов, соревнования, командные заявки, публикация протоколов и рейтинг. Основной путь — спортсмен регистрируется и подаёт заявку, организатор управляет соревнованием и командами, затем публикует результаты, которые появляются в истории выступлений и влияют на рейтинг. Отдельный контестный путь поддерживает ручную оценку алгоритмических решений и проверку CSV worker-ом. Граф объединяет документированные возможности с архитектурой из sampled-файлов; связи ненаблюдавшихся обработчиков показаны только на уровне, подтверждённом README.
Main entry points: server.go HTTP API · client.ts API client · database.go PostgreSQL · app Next.js интерфейс
Components 25
Интерфейс
- Next.js интерфейс
frontend/src/app - API client
frontend/src/shared/api/client.ts - Профили и рейтинг
frontend/src/views/athlete-profile - Календарь
frontend/src/views/calendar
Аккаунты
- Email auth
frontend/src/features/auth-by-email - Auth API
backend/internal/auth - Почта
backend/internal/mailer/smtp.go
Соревнования
- Карточка соревнования
frontend/src/views/competition-detail - Управление командами
frontend/src/features/manage-teams - HTTP API
backend/internal/httpapi/server.go - Соревнования и заявки
backend/internal/competitions/service.go - Codeforces
backend/internal/codeforces
Контесты
- Контестный интерфейс
frontend/src/views/contest-solve - Контестные API-маршруты
backend/internal/httpapi/contest.go - Contest Engine
backend/cmd/contest-engine/main.go - Контестная логика
backend/internal/contest/service.go - CSV worker
backend/cmd/contest-worker/main.go
Платформенные данные
- Рейтинг
backend/internal/rating/rating.go - PostgreSQL
backend/internal/platform/database.go - AI-сервис
backend/internal/ai/service.go
Other components
- Спортсмен
- Организатор
- Gemini API
- SMTP-сервис
- Внешняя площадка
Connections 34
- Спортсмен → Next.js интерфейс: работает
- Организатор → Next.js интерфейс: управляет
- Next.js интерфейс → Email auth: использует
- Next.js интерфейс → Карточка соревнования: показывает
- Next.js интерфейс → Календарь: показывает
- Next.js интерфейс → Профили и рейтинг: показывает
- Email auth → API client: отправляет запросы
- Карточка соревнования → API client: отправляет запросы
- Управление командами → API client: отправляет запросы
- Контестный интерфейс → API client: отправляет запросы
- Профили и рейтинг → API client: запрашивает данные
- Календарь → API client: запрашивает данные
- API client → HTTP API: HTTP запросы
- HTTP API → Auth API: обрабатывает auth
- HTTP API → Соревнования и заявки: обрабатывает соревнования
- HTTP API → Контестные API-маршруты: обрабатывает контесты
- Auth API → PostgreSQL: читает и пишет
- Auth API → Почта: отправляет письма
- Почта → SMTP-сервис: SMTP
- Соревнования и заявки → PostgreSQL: читает и пишет
- Соревнования и заявки → Рейтинг: публикация пересчитывает
- Рейтинг → PostgreSQL: читает и пишет
- HTTP API → Codeforces: обрабатывает интеграцию
- Codeforces → PostgreSQL: читает и пишет
- HTTP API → AI-сервис: обрабатывает AI-запросы
- AI-сервис → PostgreSQL: читает и пишет
- AI-сервис → Gemini API: запрашивает генерацию
- Контестные API-маршруты → Contest Engine: проксирует запросы
- Contest Engine → Контестная логика: вызывает сервис
- Контестная логика → PostgreSQL: хранит контесты и очередь
- CSV worker → Контестная логика: обрабатывает задания
- CSV worker → PostgreSQL: читает очередь
- Contest Engine → HTTP API: передаёт итоги
- Внешняя площадка → HTTP API: запрашивает export