docs(labs): факультативы вынесены в отдельную папку

- Зачем:
  - расположение файла должно отличать задания основной программы от факультативов.
- Что:
  - существующее ТЗ Superset перенесено в `docs/labs/optional/`, ссылки обновлены.
  - правило размещения записано в `AGENTS.md`.
  - выбор формы витрин объяснен учебной целью стенда.
- Проверка:
  - `git diff --check`.
  - проверены все упоминания `superset-dashboard` и относительные ссылки.
This commit is contained in:
ddadmin committed 2026-09-07 07:31:08 -04:00
1 parent 1671e67813
commit f0c7fe0c74
6 files changed
+23 -22

No files matched your search

+10 -11
View File
@@ -7,20 +7,19 @@
## Форма: по зерну, не по цене запроса
Витрина, меняющая зерно источника — дневной агрегат, сверка по заказам, —
На этом стенде форма витрины выбрана ради учебной задачи. Витрина, меняющая
зерно источника — дневной агрегат, сверка по заказам, —
материализуется: `dm.<имя>_rep` / `_dist` и публичное `dm.<имя>_v` с явным
списком колонок, по общим [конвенциям хранилища](storage.md). Наполняет её
`dm_transform`; ритм и механика пересборки — ниже. Витрина, сохраняющая зерно
источника — переименование, обогащение строки, — остаётся обычным
представлением: копию событий ради других имён колонок не держит ни один
боевой склад.
`dm_transform`; ритм и механика пересборки — ниже. Так менти учится пересобирать
агрегат конвейером. Витрина, сохраняющая зерно источника — переименование,
обогащение строки, — остаётся обычным представлением и не копирует события.
Правило выбрано учебной целью, а не ценой запроса. На объёмах стенда
Цена запроса здесь не определяет форму. На объёмах стенда
представлениями обошлось бы всё: условия сквозь цепочку представлений
проходят ([исследование](../research/2026-08-22-view-predicate-pushdown.md)).
Но пересборка агрегатов конвейером — производственный паттерн, ради
которого стенд и строится, а пара «таблица рядом с представлением»
показывает: форма — решение по роли витрины, у одного слоя законны обе.
Пара «таблица рядом с представлением» показывает, что форма зависит от роли
витрины: в одном слое уместны обе формы.
## Кто строит: стенд и менти
@@ -47,8 +46,8 @@
Дашборд этапа 8 стоит только на витринах стенда: приёмка этапа не зависит
от выполненных домашек. Свой дашборд по витринам менти —
[необязательная лаба](../labs/superset-dashboard.md) после этапа 8. Устройство
стендового дашборда — в [доке зоны Superset](superset.md).
[необязательная лаба](../labs/optional/superset-dashboard.md), доступная после
ступени 2. Устройство стендового дашборда — в [доке зоны Superset](superset.md).
## Ритм пересборки
+3 -2
View File
@@ -122,8 +122,9 @@ DM](../architecture/dm.md).
### Superset и BI
Открывается после ступени 2. [Свой дашборд в Superset](superset-dashboard.md):
свои объекты BI живут отдельно от стендовых.
Открывается после ступени 2.
[Свой дашборд в Superset](optional/superset-dashboard.md): свои объекты BI живут
отдельно от стендовых.
### Инженерия стенда
@@ -23,7 +23,7 @@
Не добавляйте графики в стендовый дашборд и не правьте его датасеты. При
инициализации Superset импорт с `--overwrite` заменит ручные правки стендовых
объектов файлами из репозитория. `make up` свой дашборд не стирает; срок жизни
таких объектов описан в [доке Superset](../architecture/superset.md), «Импорт
таких объектов описан в [доке Superset](../../architecture/superset.md), «Импорт
при каждой инициализации».
Заведите отдельные датасеты и графики, соберите из них свой дашборд.
+2 -2
View File
@@ -116,7 +116,7 @@
**17. Свой дашборд в Superset (готовая необязательная лаба).**
Урок: пользовательские объекты BI хранятся отдельно от стендовых и переживают перезапуск. Стендовые объекты при импорте перезаписываются.
Материал: `docs/labs/superset-dashboard.md`, `docs/architecture/superset.md`.
Материал: `docs/labs/optional/superset-dashboard.md`, `docs/architecture/superset.md`.\
Форма: построить свое.
Проверка: глазами — счетного инварианта у раскладки панелей нет.
@@ -276,4 +276,4 @@
STG и прием событий нельзя отдавать в форме «удали и перепиши»: код там служит несущей частью стенда. Для этих участков подходят расследования и форма «собери рядом».
У всех счетных проверок остается общая дыра — раскладка по шардам. Поэтому пересчет ключа по `hostName()` должен входить в ТЗ каждого вычитания отдельной строкой.
У всех счетных проверок остается общая дыра — раскладка по шардам. Поэтому пересчет ключа по `hostName()` должен входить в ТЗ каждого вычитания отдельной строкой.
+1 -1
View File
@@ -172,7 +172,7 @@
Открывается после ступени 2 основной программы.
- **Свой дашборд.** Готовая лаба
[`docs/labs/superset-dashboard.md`](../labs/superset-dashboard.md) учит
[`docs/labs/optional/superset-dashboard.md`](../labs/optional/superset-dashboard.md) учит
хранить пользовательские объекты отдельно от стендовых.
- **Почему дашборд не видит объект на второй ноде.** Забытый `ON CLUSTER` может
остаться незаметным до тех пор, пока дашборд не обратится ко второй ноде.