Платформа
orienteering
Разбор стартов по ориентированию: геопривязка карт, плеер трека, сплиты по КП.
Что это
FastAPI-портал, сознательно построенный на том же стеке и той же структуре, что и running-portal, но под другую предметную область — там, где к треку добавляются бумажная карта, контрольные пункты и протокол соревнований.
Главное содержание — визуализации: геопривязка отсканированной карты по опорным точкам, плеер трека с перемоткой, скоростью и обрезкой краёв, сплиты с автоматической привязкой к ближайшим КП и подсветкой проблемных перегонов, импорт протоколов соревнований по ссылке, аналитика распределения темпа с зонированием методом Jenks.
Поверх этих данных работает ИИ-тренер: разбирает ошибки на сплитах, объясняет, где и почему потеряно время, и даёт рекомендации по исправлению. Разбор дистанции, ради которого портал и создавался, продукт делает сам, а не оставляет пользователю.
Задача, которую решает
В ориентировании результат определяется не темпом, а решениями на дистанции. Чтобы их разобрать, нужно совместить карту, трек, сплиты по КП и протокол — обычно это четыре разных источника. Портал собирает всё в одном месте и подсвечивает проблемные перегоны.
Что демонстрирует
- Ведение агента через предметную математику: геопривязка растровой карты по опорным точкам и кластеризация Jenks — не CRUD, здесь нужна проверяемая постановка и понимание метода.
- Переиспользование архитектуры: второй портал построен на шаблоне первого — зрелый инженерный приём, снижающий и стоимость, и риск.
- UX через прототипы: сложная аналитика сначала рисовалась HTML-прототипами визуализаций, потом реализовывалась.
- Полноту сценариев: перечень пользовательских возможностей ведётся как продуктовая спецификация.
ИИ в продукте
Встроенный тренер разбирает ошибки на сплитах: где и почему потеряно время на перегоне и как это исправить. Главный сценарий — разбор дистанции — продукт закрывает сам, а не оставляет пользователю сырые треки и цифры.
Факты
Стек и подход
Ядро: Python 3.12+, FastAPI, Uvicorn, Jinja2, SQLite (aiosqlite), pytest + pytest-asyncio.
Сервисы: обработка GPX, геопривязка, разбор протоколов, импорт результатов.
ИИ-тренер: отдельный роутер разбора дистанции — ошибки на сплитах и рекомендации.
Фронтенд: заметная доля клиентского кода — карта, плеер, графики.
Deploy: Docker.
Теги
След ИИ-процесса
Постановки лежат в репозитории вместе с HTML-прототипами визуализаций: распределение темпа, зоны Jenks, дашборд причин ошибок — сложная аналитика сначала рисовалась, потом кодировалась. Стек и структура намеренно скопированы с соседнего портала, и это зафиксировано в README как решение, а не совпадение.
Почему это отвечает роли «превратить AI-кейсы в стандарт»
Это доказательство переносимости метода: удачный проект превращён в шаблон, по которому второй портал в другой предметной области собирается быстрее и предсказуемее. Ровно тот переход от «кейса» к «стандарту», о котором идёт речь в роли.