Дописать раздел «DDS: язык бизнеса» главы путеводителя docs/handbook/storage-layers.md так, чтобы он отвечал на то, за чем туда отправляют ТЗ ступени 3 (docs/labs/3-1-sessions-by-hand.md) и будущее ТЗ ступени 4: что такое визит на стенде, почему стенд считает сессию сам, хотя в событии уже есть VisitID, и где готовая сессия живет. Сейчас раздел дает о сессии одно предложение, а примеры «Посмотрите сами» сессию не показывают.
Чему научится читатель: сессия — расчетная сущность с договоренностью о границах, а не поле источника; ее можно посчитать иначе и разойтись с эталоном.
Решения, принятые здесь
Это вкусовая часть; исполнитель их не пересматривает.
Объем — от 8 до 12 строк прозы в разделе DDS плюс третий пример в «Посмотрите сами». Глава остается главой о слоях: сессия получает абзац-два, не свой раздел.
Содержание абзаца о сессии (факты из docs/architecture/dds/session.md и CONTEXT.md, статья «Визит»):
визит по договоренности стенда: подряд идущие события одной куки без пауз дольше 30 минут, не пересекающие границу модельных суток; «сессия» — то же понятие словами аналитика;
почему считаем сами: в бою визиты режет Метрика и отдает готовый VisitID прямо в хитах; стенд играет роль Метрики и считает сессии сам, а VisitID из события оставляет эталоном для самопроверки — иначе сборка сессии свелась бы к группировке по чужому полю;
идентификатор сессии чеканит стенд, session_id; готовые сессии читают через dds.session_v, в договоре события dds.event_v поля VisitID нет намеренно.
Подавать как выбор с доводом, без «правило», «нельзя», «обязательно». Ни слова о том, как именно устроена нарезка (окна, хеш, партиции): это материал ступени 4 и справочника.
Третий пример в «Посмотрите сами» — сессии одного модельного дня, той же даты 2026-06-01, что первые два:
Вводная фраза к нему — одно предложение: покажет сессии дня, собранные стендом из событий первого запроса. Заключительная фраза раздела («Оба запроса читают поверхности _v…») переписывается на три запроса: источник, расчетная сущность, готовый ответ витрины.
Ничего больше в главе не меняется: остальные разделы, таблица ключей, «Куда дальше» — как есть. Ссылка из ТЗ ступени 3 остается на тот же якорь #dds-язык-бизнеса.
Язык. Как во всей главе: «вы» строчными, без «ё», без «менти», короткие фразы, без олицетворений и калек. Термины: кука, визит, сессия, эталон, модельные сутки.
Границы
Правится только docs/handbook/storage-layers.md.
Не трогать ТЗ, справочники, CONTEXT.md, SQL стенда.
Сначала прочитать
docs/handbook/storage-layers.md — целиком, форма и тон.
docs/labs/3-1-sessions-by-hand.md — за чем ТЗ отправляет в главу.
Проверка
make lint в корне.
Третий запрос выполнен на стенде и возвращает строки за 2026-06-01.
Приемка
раздел DDS называет договоренность о визите, довод «почему считаем сами» и dds.session_v;
устройство нарезки (окна, хеш, партиции) не раскрыто;
третий пример в «Посмотрите сами» добавлен, заключительная фраза про три запроса;
остальная глава не изменена; слов-законов нет; make lint зеленый.
Part of #206
## Цель
Дописать раздел «DDS: язык бизнеса» главы путеводителя `docs/handbook/storage-layers.md` так, чтобы он отвечал на то, за чем туда отправляют ТЗ ступени 3 (`docs/labs/3-1-sessions-by-hand.md`) и будущее ТЗ ступени 4: что такое визит на стенде, почему стенд считает сессию сам, хотя в событии уже есть `VisitID`, и где готовая сессия живет. Сейчас раздел дает о сессии одно предложение, а примеры «Посмотрите сами» сессию не показывают.
Чему научится читатель: сессия — расчетная сущность с договоренностью о границах, а не поле источника; ее можно посчитать иначе и разойтись с эталоном.
## Решения, принятые здесь
Это вкусовая часть; исполнитель их не пересматривает.
**Объем — от 8 до 12 строк прозы в разделе DDS плюс третий пример в «Посмотрите сами».** Глава остается главой о слоях: сессия получает абзац-два, не свой раздел.
**Содержание абзаца о сессии** (факты из `docs/architecture/dds/session.md` и `CONTEXT.md`, статья «Визит»):
- визит по договоренности стенда: подряд идущие события одной куки без пауз дольше 30 минут, не пересекающие границу модельных суток; «сессия» — то же понятие словами аналитика;
- почему считаем сами: в бою визиты режет Метрика и отдает готовый `VisitID` прямо в хитах; стенд играет роль Метрики и считает сессии сам, а `VisitID` из события оставляет эталоном для самопроверки — иначе сборка сессии свелась бы к группировке по чужому полю;
- идентификатор сессии чеканит стенд, `session_id`; готовые сессии читают через `dds.session_v`, в договоре события `dds.event_v` поля `VisitID` нет намеренно.
Подавать как выбор с доводом, без «правило», «нельзя», «обязательно». Ни слова о том, как именно устроена нарезка (окна, хеш, партиции): это материал ступени 4 и справочника.
**Третий пример в «Посмотрите сами»** — сессии одного модельного дня, той же даты `2026-06-01`, что первые два:
```sql
SELECT
client_id,
started_at,
finished_at,
events_total,
pageviews,
purchases,
entry_url
FROM dds.session_v
WHERE session_date = '2026-06-01'
ORDER BY events_total DESC
LIMIT 20;
```
Вводная фраза к нему — одно предложение: покажет сессии дня, собранные стендом из событий первого запроса. Заключительная фраза раздела («Оба запроса читают поверхности `_v`…») переписывается на три запроса: источник, расчетная сущность, готовый ответ витрины.
**Ничего больше в главе не меняется**: остальные разделы, таблица ключей, «Куда дальше» — как есть. Ссылка из ТЗ ступени 3 остается на тот же якорь `#dds-язык-бизнеса`.
**Язык.** Как во всей главе: «вы» строчными, без «ё», без «менти», короткие фразы, без олицетворений и калек. Термины: кука, визит, сессия, эталон, модельные сутки.
## Границы
- Правится только `docs/handbook/storage-layers.md`.
- Не трогать ТЗ, справочники, `CONTEXT.md`, SQL стенда.
## Сначала прочитать
- `docs/handbook/storage-layers.md` — целиком, форма и тон.
- `docs/architecture/dds/session.md` — вводный абзац, «Зерно», «Идентификатор» (факты).
- `CONTEXT.md`, статьи «Визит» и «Граница суток».
- `docs/labs/3-1-sessions-by-hand.md` — за чем ТЗ отправляет в главу.
## Проверка
- `make lint` в корне.
- Третий запрос выполнен на стенде и возвращает строки за `2026-06-01`.
## Приемка
- [x] раздел DDS называет договоренность о визите, довод «почему считаем сами» и `dds.session_v`;
- [x] устройство нарезки (окна, хеш, партиции) не раскрыто;
- [x] третий пример в «Посмотрите сами» добавлен, заключительная фраза про три запроса;
- [x] остальная глава не изменена; слов-законов нет; `make lint` зеленый.
Сделано в PR #235 (ветка 234-dds-chapter), слияние закроет тикет.
Что остается:
Раздел «DDS: язык бизнеса» главы docs/handbook/storage-layers.md вырос с 6 до 13 строк: договоренность о визите (кука, пауза дольше 30 минут, граница модельных суток; аналитик зовет визит сессией), довод «почему сами» (в бою визиты режет Метрика и отдает VisitID в событиях; стенд играет ее роль, VisitID остается эталоном, иначе сборка свелась бы к группировке по чужому полю), session_id чеканит стенд, читать через dds.session_v, в dds.event_v поля VisitID нет. Устройство нарезки не раскрыто.
«Посмотрите сами»: запрос сессий дня из dds.session_v встал вторым, между событиями ODS и витриной DM; итоговая фраза — три запроса: источник, расчетная сущность, готовый ответ витрины. Якорь #dds-язык-бизнеса, на который ссылается ТЗ ступени 3, не изменился.
Как делалось: постановка — Fable; ревью постановки пропущено: тикет-срез по уже принятым решениям, вкусовых развилок не осталось. Проза — Codex gpt-6-astra medium, саморевью 1/1. Ревью — Opus (craftsman) свежей сессией, одна линия: 4 находки (фраза «как в Метрике» переворачивала довод; порядок примеров; перенос строки; «Во всех трех примерах»), все закрыты и перепроверены. Вычитка — свежий тред Sol по ai-text-lint, 11 правок; две откачены при приемке глазами: фраза о группировке по VisitID стала читаться как совет так делать, а из итоговой фразы ушли тире, которые в репозитории норма.
Урок прогона: вычитка ai-text-lint трогает смысл там, где сжимает довод «иначе было бы плохо» до одной фразы, и режет тире вопреки стилю репозитория. Правки вычитки читать глазами построчно, а не по отчету.
Дальше по карте: ТЗ ступени 4 «Перепиши нарезку стенда», тикет заводится при старте.
## Резолюция
Сделано в PR #235 (ветка 234-dds-chapter), слияние закроет тикет.
**Что остается:**
- Раздел «DDS: язык бизнеса» главы `docs/handbook/storage-layers.md` вырос с 6 до 13 строк: договоренность о визите (кука, пауза дольше 30 минут, граница модельных суток; аналитик зовет визит сессией), довод «почему сами» (в бою визиты режет Метрика и отдает `VisitID` в событиях; стенд играет ее роль, `VisitID` остается эталоном, иначе сборка свелась бы к группировке по чужому полю), `session_id` чеканит стенд, читать через `dds.session_v`, в `dds.event_v` поля `VisitID` нет. Устройство нарезки не раскрыто.
- «Посмотрите сами»: запрос сессий дня из `dds.session_v` встал вторым, между событиями ODS и витриной DM; итоговая фраза — три запроса: источник, расчетная сущность, готовый ответ витрины. Якорь `#dds-язык-бизнеса`, на который ссылается ТЗ ступени 3, не изменился.
**Как делалось:** постановка — Fable; ревью постановки пропущено: тикет-срез по уже принятым решениям, вкусовых развилок не осталось. Проза — Codex gpt-6-astra medium, саморевью 1/1. Ревью — Opus (craftsman) свежей сессией, одна линия: 4 находки (фраза «как в Метрике» переворачивала довод; порядок примеров; перенос строки; «Во всех трех примерах»), все закрыты и перепроверены. Вычитка — свежий тред Sol по ai-text-lint, 11 правок; две откачены при приемке глазами: фраза о группировке по `VisitID` стала читаться как совет так делать, а из итоговой фразы ушли тире, которые в репозитории норма.
**Урок прогона:** вычитка ai-text-lint трогает смысл там, где сжимает довод «иначе было бы плохо» до одной фразы, и режет тире вопреки стилю репозитория. Правки вычитки читать глазами построчно, а не по отчету.
**Дальше по карте:** ТЗ ступени 4 «Перепиши нарезку стенда», тикет заводится при старте.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #206
Цель
Дописать раздел «DDS: язык бизнеса» главы путеводителя
docs/handbook/storage-layers.mdтак, чтобы он отвечал на то, за чем туда отправляют ТЗ ступени 3 (docs/labs/3-1-sessions-by-hand.md) и будущее ТЗ ступени 4: что такое визит на стенде, почему стенд считает сессию сам, хотя в событии уже естьVisitID, и где готовая сессия живет. Сейчас раздел дает о сессии одно предложение, а примеры «Посмотрите сами» сессию не показывают.Чему научится читатель: сессия — расчетная сущность с договоренностью о границах, а не поле источника; ее можно посчитать иначе и разойтись с эталоном.
Решения, принятые здесь
Это вкусовая часть; исполнитель их не пересматривает.
Объем — от 8 до 12 строк прозы в разделе DDS плюс третий пример в «Посмотрите сами». Глава остается главой о слоях: сессия получает абзац-два, не свой раздел.
Содержание абзаца о сессии (факты из
docs/architecture/dds/session.mdиCONTEXT.md, статья «Визит»):VisitIDпрямо в хитах; стенд играет роль Метрики и считает сессии сам, аVisitIDиз события оставляет эталоном для самопроверки — иначе сборка сессии свелась бы к группировке по чужому полю;session_id; готовые сессии читают черезdds.session_v, в договоре событияdds.event_vполяVisitIDнет намеренно.Подавать как выбор с доводом, без «правило», «нельзя», «обязательно». Ни слова о том, как именно устроена нарезка (окна, хеш, партиции): это материал ступени 4 и справочника.
Третий пример в «Посмотрите сами» — сессии одного модельного дня, той же даты
2026-06-01, что первые два:Вводная фраза к нему — одно предложение: покажет сессии дня, собранные стендом из событий первого запроса. Заключительная фраза раздела («Оба запроса читают поверхности
_v…») переписывается на три запроса: источник, расчетная сущность, готовый ответ витрины.Ничего больше в главе не меняется: остальные разделы, таблица ключей, «Куда дальше» — как есть. Ссылка из ТЗ ступени 3 остается на тот же якорь
#dds-язык-бизнеса.Язык. Как во всей главе: «вы» строчными, без «ё», без «менти», короткие фразы, без олицетворений и калек. Термины: кука, визит, сессия, эталон, модельные сутки.
Границы
docs/handbook/storage-layers.md.CONTEXT.md, SQL стенда.Сначала прочитать
docs/handbook/storage-layers.md— целиком, форма и тон.docs/architecture/dds/session.md— вводный абзац, «Зерно», «Идентификатор» (факты).CONTEXT.md, статьи «Визит» и «Граница суток».docs/labs/3-1-sessions-by-hand.md— за чем ТЗ отправляет в главу.Проверка
make lintв корне.2026-06-01.Приемка
dds.session_v;make lintзеленый.Резолюция
Сделано в PR #235 (ветка 234-dds-chapter), слияние закроет тикет.
Что остается:
docs/handbook/storage-layers.mdвырос с 6 до 13 строк: договоренность о визите (кука, пауза дольше 30 минут, граница модельных суток; аналитик зовет визит сессией), довод «почему сами» (в бою визиты режет Метрика и отдаетVisitIDв событиях; стенд играет ее роль,VisitIDостается эталоном, иначе сборка свелась бы к группировке по чужому полю),session_idчеканит стенд, читать черезdds.session_v, вdds.event_vполяVisitIDнет. Устройство нарезки не раскрыто.dds.session_vвстал вторым, между событиями ODS и витриной DM; итоговая фраза — три запроса: источник, расчетная сущность, готовый ответ витрины. Якорь#dds-язык-бизнеса, на который ссылается ТЗ ступени 3, не изменился.Как делалось: постановка — Fable; ревью постановки пропущено: тикет-срез по уже принятым решениям, вкусовых развилок не осталось. Проза — Codex gpt-6-astra medium, саморевью 1/1. Ревью — Opus (craftsman) свежей сессией, одна линия: 4 находки (фраза «как в Метрике» переворачивала довод; порядок примеров; перенос строки; «Во всех трех примерах»), все закрыты и перепроверены. Вычитка — свежий тред Sol по ai-text-lint, 11 правок; две откачены при приемке глазами: фраза о группировке по
VisitIDстала читаться как совет так делать, а из итоговой фразы ушли тире, которые в репозитории норма.Урок прогона: вычитка ai-text-lint трогает смысл там, где сжимает довод «иначе было бы плохо» до одной фразы, и режет тире вопреки стилю репозитория. Правки вычитки читать глазами построчно, а не по отчету.
Дальше по карте: ТЗ ступени 4 «Перепиши нарезку стенда», тикет заводится при старте.