feat(generator): дефолт профиля — daily-wave, ci стал служебным
- Зачем:
- менти доставался плоский тестовый профиль ci; учебный профиль
должен быть один — daily-wave с суточной волной (issue #6).
- Что:
- дефолт daily-wave во всех точках: форма пульта generator_control,
launch.py (API и CLI), Config, Makefile, четыре shell-скрипта.
- автопроверки передают ci явно; контрактный тест пульта теперь
проверяет сам дефолт Param профиля (через AST), а не подстроку.
- доки в том же изменении: README, OPERATIONS, TEST_PLAN,
generator/README, runbook startup-history.
- Проверка:
- make test (206 + 31 passed) и make lint — зелёные.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+7
-11
@@ -204,7 +204,7 @@ make generator-logs
|
||||
| `GEN_MODEL_TIMEZONE` | Часовой пояс модельных часов для дневного коэффициента | `UTC` |
|
||||
| `GEN_MODEL_TIME_SPEED` | Сколько модельных секунд проходит за одну настенную секунду | `1` |
|
||||
| `GEN_RUN_MODE` | Режим: `live`, `backfill` или `next-day` | `live` |
|
||||
| `GEN_LAUNCH_PROFILE` | Имя профиля запуска для логов | `ci` |
|
||||
| `GEN_LAUNCH_PROFILE` | Имя профиля запуска для логов | `daily-wave` |
|
||||
| `GEN_STARTUP_HISTORY_ARTIFACT` | JSON-файл для экспорта стартовой истории в режиме `backfill` | пусто |
|
||||
| `GEN_STATE_ENABLED` | Сохранять state v3 между рестартами | `true` |
|
||||
| `GEN_STATE_RESET` | Сбросить state при старте | `false` |
|
||||
@@ -270,14 +270,10 @@ make generated-history-runtime-check
|
||||
LIVE_SECONDS=45 WAIT_STG_SECONDS=10 make generated-history-runtime-check
|
||||
```
|
||||
|
||||
По умолчанию команда использует быстрый профиль `ci`: 6 часов модельного
|
||||
времени. Историю на 2 суток с суточной волной можно получить одной командой.
|
||||
В live-продолжении `daily-wave` идёт с ×60 и тикает раз в секунду, поэтому
|
||||
модельные сутки проходят примерно за 24 настенные минуты:
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave make generated-history-analytics
|
||||
```
|
||||
По умолчанию команда использует учебный профиль `daily-wave`: 2 суток с
|
||||
суточной волной. В live-продолжении он идёт с ×60 и тикает раз в секунду,
|
||||
поэтому модельные сутки проходят примерно за 24 настенные минуты. Плоский
|
||||
профиль `ci` на 6 часов остаётся служебным для автоматических тестов.
|
||||
|
||||
Разовую длительность можно задать без ручного расчёта `GEN_MODEL_T_END`:
|
||||
|
||||
@@ -306,7 +302,7 @@ Kafka-топики данных, state и manifest генератора. `make g
|
||||
Ручной backfill без всего аналитического контура:
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave make generator-backfill
|
||||
make generator-backfill
|
||||
```
|
||||
|
||||
Перед записью команда проверяет с хоста, что Kafka data-топики и STG пустые.
|
||||
@@ -336,7 +332,7 @@ Live-продолжение стартует с этого state. Использ
|
||||
чистом стенде: она тоже проверяет, что Kafka data-топики и STG пустые.
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave make generator-continue
|
||||
make generator-continue
|
||||
|
||||
sleep 5
|
||||
make generator-down
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@
|
||||
|
||||
## Общие принципы
|
||||
|
||||
- По умолчанию используем быстрый профиль стартовой истории (`PROFILE=ci`).
|
||||
- Для smoke и CI явно задаём служебный профиль `ci`.
|
||||
- Полный прогон выполняем отдельно через `PROFILE=daily-wave`.
|
||||
- Основной ручной путь запуска — через Airflow DAG `generator_control`.
|
||||
- Консольный чистый прогон `make generated-history-analytics` остаётся коротким
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
```bash
|
||||
# Чистый быстрый прогон: backfill -> Kafka -> STG -> ODS -> DDS -> DM -> Superset
|
||||
make generated-history-analytics
|
||||
PROFILE=ci make generated-history-analytics
|
||||
|
||||
# Поднять остальные UI-сервисы после чистого прогона
|
||||
make up
|
||||
|
||||
@@ -79,20 +79,18 @@ STG уже непустые, DAG упадёт до записи и подска
|
||||
|
||||
## Экспорт
|
||||
|
||||
По умолчанию создаётся быстрый 6-часовой артефакт:
|
||||
По умолчанию создаётся двухсуточный артефакт `daily-wave` с суточной волной:
|
||||
|
||||
```bash
|
||||
make startup-history-export
|
||||
```
|
||||
|
||||
Файл по умолчанию: `/tmp/clickstream-startup-history.json`.
|
||||
|
||||
История на 2 суток с суточной волной. В live-продолжении этот профиль проживает
|
||||
модельные сутки примерно за 24 настенные минуты:
|
||||
Файл по умолчанию: `/tmp/clickstream-startup-history.json`. В live-продолжении
|
||||
профиль `daily-wave` проживает модельные сутки примерно за 24 настенные минуты.
|
||||
Для быстрой автоматической проверки явно задайте служебный профиль `ci`:
|
||||
|
||||
```bash
|
||||
ARTIFACT=/tmp/clickstream-startup-history-2d.json \
|
||||
PROFILE=daily-wave \
|
||||
PROFILE=ci ARTIFACT=/tmp/clickstream-startup-history-ci.json \
|
||||
make startup-history-export
|
||||
```
|
||||
|
||||
@@ -122,10 +120,11 @@ CHECK_LIVE_SEAM=0 make generated-history-check
|
||||
compact-топики в Kafka. ClickHouse читает данные через свои Kafka-таблицы и
|
||||
Materialized View, затем batch строит ODS, DDS и DM.
|
||||
|
||||
Если артефакт создан не профилем `ci`, импорт запускайте с тем же профилем:
|
||||
Импорт запускайте с тем же профилем, на котором создан артефакт. Для служебного
|
||||
артефакта `ci` профиль нужно задать явно:
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave ARTIFACT=/tmp/clickstream-startup-history-2d.json \
|
||||
PROFILE=ci ARTIFACT=/tmp/clickstream-startup-history-ci.json \
|
||||
make startup-history-import
|
||||
```
|
||||
|
||||
@@ -142,10 +141,10 @@ ClickHouse уже успел прочитать частичные сообще
|
||||
## Live-продолжение
|
||||
|
||||
После импорта запускайте live с тем же профилем, что был в артефакте. Для
|
||||
артефакта `daily-wave`:
|
||||
обычного артефакта `daily-wave` достаточно команды:
|
||||
|
||||
```bash
|
||||
PROFILE=daily-wave make generator-continue
|
||||
make generator-continue
|
||||
```
|
||||
|
||||
У `daily-wave` скорость ×60. Долгий простой стенда создаёт большую дыру в
|
||||
|
||||
Reference in New Issue
Block a user