data/catalog/products.csv становится словарём ClickHouse из файла: витрины
этапа 4 получат dictGet, менти — разговор о политике обновления словаря.
Файл один у генератора и стенда — расхождений нет по построению.
Что войдёт
Файл каталога монтируется в обе ноды; словарь создаётся ON CLUSTER.
Форму словаря (источник-файл, layout, lifetime) сверить с актуальной
документацией ClickHouse через MCP Context7; решение зафиксировать в storage.md тем же PR.
make check-clickhouse получает вопрос «словарь отвечает dictGet на
обеих нодах» — то, что спрашивают у ClickHouse и он отвечает сам.
Границы
Витрин с dictGet здесь нет — этап 4.
Каталог не менять: состав колонок и уровень спроса — решения #50.
Политика обновления — штатные средства словаря, своего механизма не
строить.
Кому что
Целиком Кодекс: контракт полный, вкусовых решений почти нет; форму словаря сверить через Context7 (у Кодекса подключён). Линию уместности на ревью держит Opus. Бриф Кодексу обязан требовать: проверять свойство, а не текст вывода грепом; только POSIX-инструменты (ripgrep на машине стенда нет); вердикт «недостижимо» перепроверять на достижимость, а не на факт.
Сначала прочитать
мастер-спека, раздел 3;
docs/architecture/storage.md;
compose.yaml — как монтируются конфиги нод ClickHouse;
generator/src/clickstream_generator/inventory.py — хеш каталога в описи.
Проверка
make lint, make config-test; make smoke, make check-clickhouse зелёные на чисто поднятом стенде.
dictGet по известному sku возвращает имя, категорию и цену на
обеих нодах.
Разовый опыт обновления — на копии файла или с откатом: правка CSV
видна после штатной перезагрузки словаря, после отката make test
генератора зелёный (хеш каталога лежит в описи). Замер и способ — в
тело PR.
Part of #5.
## Цель
`data/catalog/products.csv` становится словарём ClickHouse из файла: витрины
этапа 4 получат `dictGet`, менти — разговор о политике обновления словаря.
Файл один у генератора и стенда — расхождений нет по построению.
## Что войдёт
- Файл каталога монтируется в обе ноды; словарь создаётся `ON CLUSTER`.
- Форму словаря (источник-файл, layout, lifetime) сверить с актуальной
документацией ClickHouse через MCP Context7; решение зафиксировать в
`storage.md` тем же PR.
- `make check-clickhouse` получает вопрос «словарь отвечает `dictGet` на
обеих нодах» — то, что спрашивают у ClickHouse и он отвечает сам.
## Границы
- Витрин с `dictGet` здесь нет — этап 4.
- Каталог не менять: состав колонок и уровень спроса — решения #50.
- Политика обновления — штатные средства словаря, своего механизма не
строить.
## Кому что
Целиком Кодекс: контракт полный, вкусовых решений почти нет; форму словаря сверить через Context7 (у Кодекса подключён). Линию уместности на ревью держит Opus. Бриф Кодексу обязан требовать: проверять свойство, а не текст вывода грепом; только POSIX-инструменты (ripgrep на машине стенда нет); вердикт «недостижимо» перепроверять на достижимость, а не на факт.
## Сначала прочитать
- мастер-спека, раздел 3;
- `docs/architecture/storage.md`;
- `compose.yaml` — как монтируются конфиги нод ClickHouse;
- `generator/src/clickstream_generator/inventory.py` — хеш каталога в описи.
## Проверка
- [ ] `make lint`, `make config-test`; `make smoke`,
`make check-clickhouse` зелёные на чисто поднятом стенде.
- [ ] `dictGet` по известному `sku` возвращает имя, категорию и цену на
обеих нодах.
- [ ] Разовый опыт обновления — на копии файла или с откатом: правка CSV
видна после штатной перезагрузки словаря, после отката `make test`
генератора зелёный (хеш каталога лежит в описи). Замер и способ — в
тело PR.
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 #5.
Цель
data/catalog/products.csvстановится словарём ClickHouse из файла: витриныэтапа 4 получат
dictGet, менти — разговор о политике обновления словаря.Файл один у генератора и стенда — расхождений нет по построению.
Что войдёт
ON CLUSTER.документацией ClickHouse через MCP Context7; решение зафиксировать в
storage.mdтем же PR.make check-clickhouseполучает вопрос «словарь отвечаетdictGetнаобеих нодах» — то, что спрашивают у ClickHouse и он отвечает сам.
Границы
dictGetздесь нет — этап 4.строить.
Кому что
Целиком Кодекс: контракт полный, вкусовых решений почти нет; форму словаря сверить через Context7 (у Кодекса подключён). Линию уместности на ревью держит Opus. Бриф Кодексу обязан требовать: проверять свойство, а не текст вывода грепом; только POSIX-инструменты (ripgrep на машине стенда нет); вердикт «недостижимо» перепроверять на достижимость, а не на факт.
Сначала прочитать
docs/architecture/storage.md;compose.yaml— как монтируются конфиги нод ClickHouse;generator/src/clickstream_generator/inventory.py— хеш каталога в описи.Проверка
make lint,make config-test;make smoke,make check-clickhouseзелёные на чисто поднятом стенде.dictGetпо известномуskuвозвращает имя, категорию и цену наобеих нодах.
видна после штатной перезагрузки словаря, после отката
make testгенератора зелёный (хеш каталога лежит в описи). Замер и способ — в
тело PR.