From b8816466d98d76f997b08d308b59126feac6aacb Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Fri, 7 Aug 2026 09:22:34 +0300 Subject: [PATCH] =?UTF-8?q?docs(testing):=20=D0=B8=D0=BD=D1=82=D0=B5=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=BE=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B6=D0=B8=D0=B2=D1=91=D1=82=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=8F=D0=BD=D0=BD=D0=BE=D0=B9=20=D1=86=D0=B5=D0=BB=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - проверка, которая кормит стенд данными, оставляет их в мире менти навсегда: у ODS срока хранения нет, и события, которых мир не рождал, неотличимы в лабах от настоящих. Решение принято при разборе постановок #41 и #43, чтобы оно решалось по карте, а не заново в каждом тикете. - Что: - добавлен раздел «Интеграционная проверка постоянной целью не становится»: такой прогон делается один раз при исполнении, след — запись в теле PR. - названо требование прибираться за собой и дешёвый способ это сделать: модельный день за границей оси мира и снос его партиции. - названо, что стережёт цепочку постоянно вместо неё — проверки на настоящих данных, которые стенд произвёл сам. - Проверка: - make config-test Co-Authored-By: Claude Opus 5 --- docs/architecture/testing.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/architecture/testing.md b/docs/architecture/testing.md index 2f73226..c73cbb7 100644 --- a/docs/architecture/testing.md +++ b/docs/architecture/testing.md @@ -96,6 +96,31 @@ ClickHouse отвечает сразу. посмотрите, покраснеет ли прогон и назовёт ли виновника. Не покраснел — проверка не работает, и чинить надо её, а не стенд. +## Интеграционная проверка постоянной целью не становится + +Проверка, которая не спрашивает стенд, а **кормит** его — шлёт сообщения, +вставляет строки, портит данные нарочно, — постоянной целью `make` не живёт. +Такую проверку гоняют один раз при исполнении, убеждаются, что механизм +работает, и оставляют след записью в теле PR. Регулярная жизнь стенда — это +жизнь с менти, а интеграционный прогон в неё не входит; самое большее, он +становится темой урока. + +Довод не про цену прогона, а про данные. Вложенное остаётся: у сырья срок +жизни трое суток, а ODS хранит всё, и события, которых мир не рождал, лягут в +лабы менти неотличимо от настоящих — считая конверсию, он молча посчитает и +их. Хуже явного мусора: явный видно. + +Отсюда правило для того, что всё-таки вкладывает: **прибираться за собой.** +Дешевле всего это выходит партицией — опыт играет модельный день за границей +оси мира, его строки ложатся в собственную партицию `EventDate`, и она +сносится по окончании. Заодно менти видит партицию как единицу работы — тот +же механизм, на котором стоит переобработка дня X. + +Что тогда стережёт цепочку постоянно — проверки на **настоящих** данных, тех, +что стенд произвёл сам: счётчики против манифеста зернового мира ловят +сломанный разбор (события уехали в брак — счёт разошёлся), ничего при этом не +вкладывая. + ## Устройство скриптов | Цель | Скрипт |