Перейти к содержанию

Backend Backlog — найден через /admin/testing

Сгенерировано из реального прогона tourist API smoke-тестов.

✓ Уже починено (2026-05-13)

# Симптом Корень Фикс
1 GET /modules → 500 «Ошибка получения модулей» Caddy роутил /modules в hotel_api_v2 (монолит) → монолит проксировал в Supabase Edge Function которой нет Caddy: /modulesarkhyz-platform-svc:8000 + rebuild platform-svc (контейнер имел stale code без module_access router)
2 POST /tour-bookings, /transfers/bookings, /restaurants/.../table-bookings, /instructors/booking/{id} → 500 «invalid input for query argument» asyncpg падал когда фронт слал не-UUID в path/body services/booking-svc/app/main.py: глобальный @app.exception_handler(asyncpg.DataError) → 422 detail
3 Дубль splash-screen на cold-boot <AuthOverlay> + <ExtendedLoadingState> оба монтировали <LoaderScreen> на z-9999 OptimizedAppRoutes.tsx: на cold-boot <Route element={null} /> — AuthOverlay сам покрывает экран
4 YK return_url захардкожен на сайт create_payment брал из БД services/booking-svc/app/yookassa.py: return_url параметризован, клиент шлёт через заголовок X-Return-URL

⏳ Backlog — что осталось (28 endpoints)

Критичные (нужны для core UX) — приоритет P0

Endpoint Проблема Где исправить
GET /bookings/ 404 — список броней туриста (история) не работает services/booking-svc/app/routers/bookings.py — добавить GET листинг с фильтром user_id=me
POST /reviews 405 — нельзя оставить отзыв api-admin/app/routers/reviews.py (или новый микросервис social) — добавить POST с валидацией target_type/target_id
PUT /users/me 405 — нельзя редактировать профиль services/auth-svc/app/routers/users.py (или api-admin) — добавить PUT с pydantic-моделью партиальных полей
POST /users/password 405 — нельзя сменить пароль то же место, добавить POST с current_password + new_password
GET /payments/history 404 — история платежей в кабинете не работает services/booking-svc/app/routers/payments.py — добавить GET с фильтром по user_id
POST /favorites/{type}/{id} + GET /favorites/{type} + DELETE /favorites/{type}/{id} 404/405 — нельзя избранное api-admin/app/routers/favorites.py (новый) — таблица public.favorites(user_id, type, target_id) уже есть; нужны 3 endpoints
GET /notifications/unread-count 404 — счётчик колокольчика не работает services/platform-svc/app/routers/notifications.py — добавить GET /notifications/unread-count → {count: int}
POST /notifications/mark-all-read 404 — кнопка «прочитать всё» то же место — добавить POST

Важные (UX, не критично) — P1

Endpoint Проблема Где исправить
GET /events, GET /events/{id} 404 — раздел «События» пустой новый router в catalog-svc или монолите
GET /transfers/routes 404 — список маршрутов трансферов services/booking-svc или catalog-svc — добавить GET-листинг (есть /transfers/{id})
GET /badges, GET /leaderboard 404 — геймификация services/gamification-svc/app/routers/ — нужны эти endpoints
GET /chats, POST /chats 404 — чаты не работают services/chat-svc/app/routers/ — есть /p2p-chats/* но не /chats
GET /tracking/{stats,targets}, POST /tracking/sessions 404 — трекинг неполный services/resort-svc/app/routers/tracking.py — добавить
POST /sos/request 404 — SOS не работает services/platform-svc — добавить router
POST /support/tickets 500 — не создаются тикеты api-admin/app/routers/support.py:107 — таблица support_tickets отсутствует в БД ИЛИ get_current_user_id() падает при отсутствии auth
GET /ai/recommendations 404 — нет AI рекомендаций services/...-svc — добавить router

Низкий приоритет — P2

Endpoint Проблема
POST /push/subscribe 405 — push-уведомления не настраиваются
POST /ski-pass/{purchase,validate} 405 — ски-пасс не покупается
POST /insurance/purchase 405 — страховка не покупается
POST /role-requests 405 — заявка на партнёра
POST /friends/invite, GET /friends/live 404 — друзья на склоне
POST /payments/yk/webhook 404 — нет webhook handler от ЮKassa (но webhooks работают через другой путь?)

Сервис-уровень

Что Состояние Что делать
tracking-svc контейнер Нет в podman ps Нет такого микросервиса — трекинг живёт в resort-svc. Test 503 был транзиентный
gamification-svc Up, но без бизнес-endpoints Развернуть routers под /badges, /leaderboard
chat-svc Up, но конфигурация роутинга В Caddy путь /chats/* либо не настроен, либо роутится не туда

Как тестировать после фикса

  1. Зайди на /admin/testing → таб «Турист» → нажми «Запустить все проверки»
  2. Сравни кол-во HTTP 404/405/500 с предыдущим прогоном — должно уменьшаться
  3. Конкретный сценарий по id (например tourist-api-bookings-history) → жми «Тест» — должен отдать ожидаемый shape
  4. Экспорт MD из отчёта → diff между прогонами

Стратегия имплементации

  1. Фаза А (1-2 дня): P0 endpoints — это разблокирует основной UX
  2. Фаза Б (2-3 дня): P1 — события/транспорт/чаты
  3. Фаза В (1 день): P2 — мелочь, low-priority
  4. Фаза Г: расширить тесты на партнёрские роли (hotelier/touroperator/...) — там тоже нужны API smokes

Каждая фаза = 1 коммит + прогон /admin/testing → отчёт в этом репо.