- Зачем: - docs/internal/ превратился в свалку: дизайн-документы, ревью, планы и справочники лежали вперемешку. - архивные планы были неотличимы от живых документов. - Что: - docs/internal/ удалён; файлы распределены по docs/design/, docs/reference/, docs/archive/, docs/plans/, docs/assignment/. - educational-tasks.md убран из корня в архив (устарел). - обновлены все перекрёстные ссылки в AGENTS.md, TODO.md, README.md, docs/README.md и внутри design/reference/. - актуализированы architecture_review.md (статус DM-слоя), db_schema.md (DM-слой), TESTING.md, dag_execution_order.md, pxf_bookings.md. - добавлены заглушки docs/assignment/README.md и docs/plans/README.md. - Проверка: - make test && make lint - rg 'docs/internal' --glob '!docs/archive/*' — должно быть пусто.
4.6 KiB
4.6 KiB
Временное ТЗ по блоку bookings (для текущей разработки)
Внутренний файл для наставника: поясняет, как устроен источник bookings-db и генерация данных. Студентам обычно не нужен.
- Контейнер
bookings-db— отдельный сервис Postgres изdocker-compose.yml, база по умолчаниюdemo(из upstream demodb), без переименований. - Доступ снаружи не блокируем (порт
5434по умолчанию), чтобы позже читать через PXF и подключаться из Greenplum. - Инициализация: два способа:
make bookings-init(рекомендуется): быстрое восстановление из seed-дампа (~18 сек).make bookings-generate(для разработчиков): полная генерация с нуля — клонирует demodb с закреплённым коммитом, накладывает патчи (engine:jobs=1синхронно +busy()игнорирует свой pid;install.sql:DROP DATABASE IF EXISTS,connstrбез хардкода), ждётpg_isready, ставитgen.connstrи GUCbookings.start_date/init_days/jobs, затем запускает/bookings/generate_next_day.sqlчерезpsql -f. Значения по умолчанию: стартовая дата 2017-01-01,init_days=60,jobs=2.
- Генерация следующего дня:
make bookings-generate-dayпрогоняет тот же SQL (читает GUC, вызываетgenerate/continue, ждётbusy(), закрывает dblink). Приjobs=1всё синхронно, без dblink. - Исходники demodb: клонируем по требованию с фиксированным хешем, кладём в
bookings/demodb/(в.gitignore), патчи лежат вbookings/patches/и применяются автоматически приmake bookings-generate. - Документация: в README описаны команды (
bookings-init,bookings-generate, проверка данных, генерация дня), параметры.env; настройка PXF/ETL — следующий этап.
Текущее состояние
make bookings-init— быстрое восстановление из seed-дампа (~18 сек), рекомендуется для студентов.make bookings-generate— полная генерация с нуля: автоматически применяет патчи (engine_jobs1_sync.patch,install_drop_if_exists.patch), ждёт готовности Postgres черезpg_isready, запускаетinstall.sql, выставляетgen.connstr/GUC и вызываетgenerate_next_day.sqlчерезpsql -f.- Дефолты:
BOOKINGS_START_DATE=2017-01-01,BOOKINGS_INIT_DAYS=60,BOOKINGS_JOBS=2. Приjobs=1генерация идёт синхронно без dblink,busy()не учитывает текущую сессию. .env.example/README обновлены под новые дефолты; каталогbookings/demodb/в.gitignore.- Патчи лежат в
bookings/patches/и накладываются приbookings-clone-demodb.
Текущее состояние тестов/проблем
- Чистый прогон
make bookings-init(восстановление из seed-дампа) проходит за ~18 секунд. - Чистый прогон
make bookings-generate(послеdocker compose down -vи удаленияbookings/demodb) проходит за ~1,5 минуты: база ставится,busy()→f,bookings.bookingsот2017-01-01 00:00:18до2017-01-01 23:59:59. - Ранее зависание на
busy()приjobs=1лечится патчем:process_queueтеперь синхронный, аbusy()игнорирует текущий backend. - Данных пока только на 1 день по умолчанию, чтобы генерация не занимала много времени.
Идеи/следующие шаги
- Если понадобится больше дней — увеличивать
BOOKINGS_INIT_DAYS, но помнить, что генерация может идти долго; контролировать черезSELECT busy();. - Следующий этап — PXF/ETL в Greenplum; текущая задача — лишь подготовить источник bookings.