fix(airflow): формулировки пульта переписаны живым русским
- Зачем: - владелец на ревью PR #175 отметил кальку в подсказках; читать их будет менти, и язык здесь — часть продукта. - Что: - переписаны подсказка формы days, докстринги работников, строки журнала remember_played, абзац README и пункт в etl.md; смысл не менялся. - Проверка: - make lint, make config-test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c2c4401a16
commit
17995d4c5e
3 files changed
+18
-19
No files matched your search
@@ -262,11 +262,10 @@ uv run --project generator python -m clickstream_generator batch \
|
||||
`0` — очистка закончена, а начальная генерация ещё не завершена. Работники
|
||||
начинают играть только с позиции `8` и больше.
|
||||
|
||||
Форма запуска работника спрашивает только своё — сколько дней играть.
|
||||
Служебные поля Airflow в ней — «Logical date» и «Run ID» за створкой
|
||||
«Advanced Options» — к оси мира отношения не имеют: какой день пойдёт первым,
|
||||
смотрите в `world_position`, а какой сыгран — в журнале шага
|
||||
`remember_played`.
|
||||
В форме запуска можно выбрать только число дней. Первый день работник берет из
|
||||
`world_position`. Поля «Logical date» и «Run ID» спрятаны в «Advanced Options».
|
||||
Они нужны самому Airflow и на выбор дня не влияют. Сыгранные дни и новую
|
||||
позицию работник пишет в журнал шага `remember_played`.
|
||||
|
||||
Выключатель создаётся на паузе. Снимите — мир поедет сам; поставите обратно —
|
||||
встанет на границе модельных суток, доиграв начатый день. Форма пульта и доводы
|
||||
|
||||
+12
-12
@@ -148,12 +148,12 @@ def _ingest_orders() -> TriggerDagRunOperator:
|
||||
maximum=7,
|
||||
title="Сколько дней прожить",
|
||||
# description_md рендерится подсказкой прямо в форме запуска
|
||||
# (params.rst, Airflow 3.3) — объяснение стоит там, где путают.
|
||||
# (params.rst, Airflow 3.3), чтобы правило было видно сразу.
|
||||
description_md=(
|
||||
"Какие именно дни — решает не форма: первый несыгранный "
|
||||
"день хранит переменная `world_position` (Admin → "
|
||||
"Variables). Служебные поля Airflow — Logical date, Run "
|
||||
"ID — к оси мира отношения не имеют."
|
||||
"Форма задает только число дней. Номер первого несыгранного "
|
||||
"дня работник берет из переменной `world_position` (Admin → "
|
||||
"Variables). Поля Logical date и Run ID нужны самому Airflow "
|
||||
"и на выбор дня не влияют."
|
||||
),
|
||||
)
|
||||
},
|
||||
@@ -162,9 +162,9 @@ def world_next_day():
|
||||
"""Прожить следующие дни пачкой, без пауз.
|
||||
|
||||
Запускается руками. День по умолчанию один, но разгон вперёд идёт одним
|
||||
нажимом, а не десятью: сколько дней играть — параметр запуска. Какие
|
||||
именно дни, знает переменная `world_position`, а не форма: логическая
|
||||
дата прогона к оси мира отношения не имеет.
|
||||
нажимом, а не десятью: сколько дней играть — параметр запуска. Первый
|
||||
день работник берет из `world_position`. Логическая дата прогона на выбор
|
||||
дня не влияет.
|
||||
"""
|
||||
|
||||
@task
|
||||
@@ -174,7 +174,7 @@ def world_next_day():
|
||||
position = first_day + days
|
||||
Variable.set(WORLD_POSITION, str(position))
|
||||
logging.info(
|
||||
"сыграны дни %s–%s, позиция теперь %s", first_day, position - 1, position
|
||||
"дни %s–%s сыграны; новая позиция — %s", first_day, position - 1, position
|
||||
)
|
||||
|
||||
first_day = first_unplayed_day()
|
||||
@@ -215,15 +215,15 @@ def world_live_day():
|
||||
Ускорение ×60: модельные сутки укладываются примерно в двадцать четыре
|
||||
реальные минуты, и суточная волна разворачивается на глазах. Запускается
|
||||
руками; чтобы мир жил так день за днём сам, есть выключатель `world_live`.
|
||||
Какой день пойдёт, знает переменная `world_position`: логическая дата
|
||||
прогона к оси мира отношения не имеет.
|
||||
Следующий день работник берет из `world_position`. Логическая дата прогона
|
||||
на выбор дня не влияет.
|
||||
"""
|
||||
|
||||
@task
|
||||
def remember_played(first_day: int) -> None:
|
||||
"""Позиция ставится по сыгранному дню и только по успеху."""
|
||||
Variable.set(WORLD_POSITION, str(first_day + 1))
|
||||
logging.info("сыгран день %s, позиция теперь %s", first_day, first_day + 1)
|
||||
logging.info("сыгран день %s; новая позиция — %s", first_day, first_day + 1)
|
||||
|
||||
first_day = first_unplayed_day()
|
||||
played = _generator("play_day", ["live", "--day", PLAYED_DAY])
|
||||
|
||||
@@ -138,8 +138,8 @@ ODS и ещё не собранный в DDS, затем при необходи
|
||||
|
||||
- Партиционная переобработка — переиграть произвольный прошлый день или
|
||||
диапазон, включая форму необязательных параметров того же дага.
|
||||
- Инкрементальный ETL вместо пересборки — отклонён (#2, wontfix); учебная
|
||||
сторона темы — идея лабы #149.
|
||||
- Инкрементальный ETL вместо пересборки отклонен (#2, wontfix). Идея отдельной
|
||||
лабы на эту тему — #149.
|
||||
- Состав витрин `dm_transform` и проверок `dq_check` —
|
||||
[дока слоя DM](dm.md).
|
||||
|
||||
|
||||
Reference in new issue
Block a user