FastAPI-бэкенд агрегации цен на отели от 25+ DMC через 4 типа API (XMLGate, Unihotel, Sejour SOAP, Sedna REST).
Нормализация данных, master-маппинг 10K отелей, единый поисковый API. PostgreSQL 16 с потоковой репликацией, 65M+ записей.
FastAPI
SQLAlchemy
AsyncPG
PostgreSQL 16
React 19
Vite
Sentry
Nginx
44
Коммитов
45 500
Строк кода
25/27
DMC активных
115+
API endpoints
65M+
Записей в БД
CRITICAL: Пароли DMC захардкожены в config.py
Все 25 DMC credentials в исходниках (329 строк). Необходимо вынести в .env
CRITICAL: M2 показывает цены на 10-40% ниже реальных
Баг SPO discount calculator (24K строк). Фаза 1/5 fix plan завершена. Рекомендация: использовать Legacy v1
🎯 Радар EPICs
📊 Прогресс по EPICs
🔌 DMC Интеграции
25 активных / 2 отключены
| # | DMC | Тип API | Направления | Статус |
|---|
📋 Задачи A-Hub
⛔ CRITICAL
⬜Вынести credentials из config.py в .envCRITICAL
🔶 HIGH
⬜Docker / docker-composeHIGH
⬜CI/CD pipelineHIGH
⬜Unit тесты PriceSearchService + DMC клиентовHIGH
⬜Индексация БД для M2 запросовHIGH
⬜V2 Cleanup: верификация всех endpointsHIGH
🟡 MEDIUM
⬜Активировать Replica 2 (10.10.0.6)
⬜SQL optimization plan — реализовать все пункты
⬜Удалить 11 legacy API роутеров
⬜Удалить deprecated SAMO клиенты
⬜Обновить фронтенд для API v2
⬜Multi-room UI на фронтенде
⬜Deployment guide
⬜Запросить whitelist IP у Arri
⚪ LOW
⬜Учёт валюты в SAMO ценах (hardcoded float)
⬜Авторизация для стандартного SAMO API
⬜README.md в корне проекта
🖥️ Серверы (GCP europe-west3)
| Сервер | IP | Роль |
|---|---|---|
| ahub-api | 10.10.0.4 | FastAPI backend, порт 8888 |
| ahub-db | 10.10.0.3 | PostgreSQL Primary (write) |
| ahub-db-replica1 | 10.10.0.5 | Read Replica 1 ✅ |
| ahub-db-replica2 | 10.10.0.6 | Read Replica 2 ⏸️ не активна |
🗄️ База данных
| Таблица | Объём | Описание |
|---|---|---|
| hotel_prices | ~37M | Цены от XMLGate/Unihotel DMC |
| sedna_prices | ~470K | Цены от Sedna DMC |
| sejour_prices | — | Цены от Sejour DMC |
| master_hotels | ~10K | Единый справочник отелей |
| master_hotel_dmc_mapping | ~28K | Маппинг DMC → master |