UTM cons вместо chb: default/random и передача согласий Preland → API #17

Closed
opened 2026-10-24 02:59:21 +02:00 by yury · 6 comments
Owner

Связь и цель

Основной реестр и полный контракт — api#317. Поручение владельца от 24.10.2026: одновременно с новым конструктором согласий заменить прежнюю UTM chb на числовую cons и на прелендингах. Не сохранять chb как параллельную настройку или алиас.

Работы

  • Проверить все потребители chb в действующей ветке: allowlist, query, normalizer, default, rnd/weights, конфигурации доменов/наборов, генерация URL/redirect, claim/handoff, fixtures и контрактные тесты, документация и примеры ссылок.
  • Перевести их на cons, убрать влияние старых chb URL/cookie/runtime ключей. В API уходит конкретный cons, а не rnd. Не сломать передачу client_key, темы и остальных собственных/внешних рекламных параметров.
  • Начальный random: cons=rnd → группа 1 с вероятностью 100%. Группа1 должна существовать на стороне API до активации. Default основного сайта — cons=2; не реализовывать random внутри API. Проверить и согласованно заменить прежние chb defaults/weights, не выдумывая дополнительные значения для других ключей runtime-конфига.
  • Тексты и состав согласий редактируются в CPanel API по api#317, отдельный каталог/редактор в Preland не плодить. Один тариф может иметь несколько вариантов текста, группа cons выбирает нужные.
  • Старые поля и тексты в тарифах API сохраняются, пока владелец не перенесёт содержимое и отдельно не разрешит удаление.

Приёмка

  • Concrete cons=1/2, отсутствие, rnd и неверное значение; rnd всегда конкретная1, API default2; реальный Preland → claim → Tour → Join с правильной группой и чистым URL.
  • Старый chb не влияет на cons; темы, client_key и посторонние параметры сохраняют действующий контракт, нет старого маркера в активном контексте.
  • Ошибка/повтор загрузки, Reload/Back, desktop/mobile и изоляция воронки. Разные конкретные группы не смешиваются.
  • Прогнать действующие тесты, серверный и браузерный сценарий; результаты/коммиты/доставка фиксируются комментариями и связью с api#317.

Доставка и ограничения

Текущее сообщение поручает оформить задачу, выпуск не выполнен. До отдельного поручения на production сохраняется preland#4: staging → zoomstage.online, zoompixel.ru/.online не обновлять. Runtime config.json сначала прочитать с цели, изменить только согласованные ключи chb→cons и связанные defaults/weights; прочие настройки не заменять. После доставки сохранить актуальный stage-снимок в Git. Если rollout или обязательная проверка не завершены, задачу оставить открытой.

## Связь и цель Основной реестр и полный контракт — [api#317](http://git.dira89kv.beget.tech:3000/anton/api/issues/317). Поручение владельца от 24.10.2026: одновременно с новым конструктором согласий заменить прежнюю UTM `chb` на числовую `cons` и на прелендингах. Не сохранять chb как параллельную настройку или алиас. ## Работы - Проверить все потребители chb в действующей ветке: allowlist, query, normalizer, default, rnd/weights, конфигурации доменов/наборов, генерация URL/redirect, claim/handoff, fixtures и контрактные тесты, документация и примеры ссылок. - Перевести их на cons, убрать влияние старых chb URL/cookie/runtime ключей. В API уходит конкретный cons, а не rnd. Не сломать передачу client_key, темы и остальных собственных/внешних рекламных параметров. - **Начальный random: cons=rnd → группа 1 с вероятностью 100%.** Группа1 должна существовать на стороне API до активации. Default основного сайта — cons=2; не реализовывать random внутри API. Проверить и согласованно заменить прежние chb defaults/weights, не выдумывая дополнительные значения для других ключей runtime-конфига. - Тексты и состав согласий редактируются в CPanel API по api#317, отдельный каталог/редактор в Preland не плодить. Один тариф может иметь несколько вариантов текста, группа cons выбирает нужные. - Старые поля и тексты в тарифах API сохраняются, пока владелец не перенесёт содержимое и отдельно не разрешит удаление. ## Приёмка - Concrete cons=1/2, отсутствие, rnd и неверное значение; rnd всегда конкретная1, API default2; реальный Preland → claim → Tour → Join с правильной группой и чистым URL. - Старый chb не влияет на cons; темы, client_key и посторонние параметры сохраняют действующий контракт, нет старого маркера в активном контексте. - Ошибка/повтор загрузки, Reload/Back, desktop/mobile и изоляция воронки. Разные конкретные группы не смешиваются. - Прогнать действующие тесты, серверный и браузерный сценарий; результаты/коммиты/доставка фиксируются комментариями и связью с api#317. ## Доставка и ограничения Текущее сообщение поручает оформить задачу, выпуск не выполнен. До отдельного поручения на production сохраняется preland#4: staging → zoomstage.online, zoompixel.ru/.online не обновлять. Runtime config.json сначала прочитать с цели, изменить только согласованные ключи chb→cons и связанные defaults/weights; прочие настройки не заменять. После доставки сохранить актуальный stage-снимок в Git. Если rollout или обязательная проверка не завершены, задачу оставить открытой.
Author
Owner

Создано по прямому поручению владельца24.10.2026 в связке с api#317. Основной реестр: http://git.dira89kv.beget.tech:3000/anton/api/issues/317. Полностью заменить chb→cons, random только1 со100%, API default2. Текущий этап — постановка, не выпуск. Runtime config сохранить вне согласованных ключей; production Preland не обновлять по этому поручению (preland#4).

Создано по прямому поручению владельца24.10.2026 в связке с api#317. Основной реестр: http://git.dira89kv.beget.tech:3000/anton/api/issues/317. Полностью заменить chb→cons, random только1 со100%, API default2. Текущий этап — постановка, не выпуск. Runtime config сохранить вне согласованных ключей; production Preland не обновлять по этому поручению (preland#4).
Author
Owner

Начато исполнение по поручению владельца24.10 с разрешённым APIproduction после проверок. Прочитаны обе задачи со всеми комментариями; выполнены3независимых readonly-аудита Yii2, Frontend, DevOps/Linux/Windows. Точные базы: API9565aa3,Preland188b78a,KBe35ac89. Чистые worktree wt/issue317-api/preland/kb, исходныеdirtycheckoutне тронуты. Спецификация: KBworktree Спеки/2026-10-24 Конструктор согласий cons — реализация.md; план Планы/2026-10-24 Конструктор согласий cons — план.md. WorkflowTask0аудит/baseline→Task1каталог→Task2CPanel→Task3контекст/Join→Task4Preland→Task5wholematrix/review→Task6APIvtag/stagepreland/postdeploy/KB/close. Собран baselineimagezoomzilla-api:cons317-baseline, штатный полныйimagegate на отдельнойDB PASS. Владелец получил варианты Q1стартсостав1/2,Q2cons-memory,Q3statecheckboxприA/B/A; ответы ещё ожидаются, зависимыеseed/memory/userstate/активацияне выбираем. НезависимыйTask1схема/модели безseed начат. Картаобнаружений: stalecheckboxsnapshotвsharedJS; legacychbкакexternalquery/recovery; exactcontextkeysмогутстеретьtheme/tp. Сохраняем stagehandoffqueryбезchb, конечныеTour/Joinчистые. Privatebusinessflowвнеscopeне переводим; regressionsharedJSобязательна. Prelandproductionзамороженпо#4, толькоzoomstage.online. Задачиоткрыты, продуктовыйвыпускнепроводился.

Начато исполнение по поручению владельца24.10 с разрешённым APIproduction после проверок. Прочитаны обе задачи со всеми комментариями; выполнены3независимых readonly-аудита Yii2, Frontend, DevOps/Linux/Windows. Точные базы: API9565aa3,Preland188b78a,KBe35ac89. Чистые worktree wt/issue317-api/preland/kb, исходныеdirtycheckoutне тронуты. Спецификация: KBworktree Спеки/2026-10-24 Конструктор согласий cons — реализация.md; план Планы/2026-10-24 Конструктор согласий cons — план.md. WorkflowTask0аудит/baseline→Task1каталог→Task2CPanel→Task3контекст/Join→Task4Preland→Task5wholematrix/review→Task6APIvtag/stagepreland/postdeploy/KB/close. Собран baselineimagezoomzilla-api:cons317-baseline, штатный полныйimagegate на отдельнойDB PASS. Владелец получил варианты Q1стартсостав1/2,Q2cons-memory,Q3statecheckboxприA/B/A; ответы ещё ожидаются, зависимыеseed/memory/userstate/активацияне выбираем. НезависимыйTask1схема/модели безseed начат. Картаобнаружений: stalecheckboxsnapshotвsharedJS; legacychbкакexternalquery/recovery; exactcontextkeysмогутстеретьtheme/tp. Сохраняем stagehandoffqueryбезchb, конечныеTour/Joinчистые. Privatebusinessflowвнеscopeне переводим; regressionsharedJSобязательна. Prelandproductionзамороженпо#4, толькоzoomstage.online. Задачиоткрыты, продуктовыйвыпускнепроводился.
Author
Owner

Q3 согласовано владельцем после пользовательского примера: при КАЖДОЙ смене тарифа заново применять начальные отметки группы (в том числе A→B→A), не восстанавливать ручной выбор прошлого тарифа. Дословный смысл уточнения: галочка — информирование/допуск к продолжению, а не управление банковским продлением; снятая показанная requiredгалочка блокирует кнопку. Предложение сохранять userstate отвергнуто, его не реализуем. ВсеQ1/Q2/Q3 теперь разрешены, спецификация/план обновлены. Task1commit5dea110: additiveкаталог/группы/HTMLresolver,58DBchecks вDocker включаяrace2processdefault, fresh86migrations/down-reapply/соседниеSSR PASS; независимоеcatalog_reviewидёт. Rootпараллельно готовит только независимый PrelandrepoTask4: resolverexplicitлюбыеpositivecons, rndтолько1, default2,legacychbdropfresh/recovery, точечныйpatchruntimeпослесовместимогокода, сохранность остальныхполей/customconsпри следующихdeploy. REDдо реализациивиден,2017resolverchecks+остальныеPrelandPHPtests+manifest213PASS. ЭтоещёнеUIприёмка/невыкат. СледующийэтапCPanelпослеTask1review; обе задачипокаOPEN.

Q3 согласовано владельцем после пользовательского примера: при КАЖДОЙ смене тарифа заново применять начальные отметки группы (в том числе A→B→A), не восстанавливать ручной выбор прошлого тарифа. Дословный смысл уточнения: галочка — информирование/допуск к продолжению, а не управление банковским продлением; снятая показанная requiredгалочка блокирует кнопку. Предложение сохранять userstate отвергнуто, его не реализуем. ВсеQ1/Q2/Q3 теперь разрешены, спецификация/план обновлены. Task1commit5dea110: additiveкаталог/группы/HTMLresolver,58DBchecks вDocker включаяrace2processdefault, fresh86migrations/down-reapply/соседниеSSR PASS; независимоеcatalog_reviewидёт. Rootпараллельно готовит только независимый PrelandrepoTask4: resolverexplicitлюбыеpositivecons, rndтолько1, default2,legacychbdropfresh/recovery, точечныйpatchruntimeпослесовместимогокода, сохранность остальныхполей/customconsпри следующихdeploy. REDдо реализациивиден,2017resolverchecks+остальныеPrelandPHPtests+manifest213PASS. ЭтоещёнеUIприёмка/невыкат. СледующийэтапCPanelпослеTask1review; обе задачипокаOPEN.
Author
Owner

Продолжаем api#317/preland#17 по согласованным Q1/Q2/Q3. Каталог согласий: коммит 5dea110, независимое ревью APPROVE, 58 DB-проверок включая concurrent default PASS. Админка готова к реальным HTTP/UI-проверкам, отдельный Docker стенд localhost:4337 (чужой стенд 4317 сохранён). Runtime cons/Join и адаптация прежних regression checks выполняются отдельно, без удаления legacy полей тарифов. Preland: все 14 standalone PHP checks и release manifest (213 ресурсов) PASS; точечный runtime config patch сохраняет соседние поля и пользовательские настройки cons при повторном deploy. Выпуска ещё нет; задачи остаются открыты до UI-приёмки, интеграционного gate и доставки.

Продолжаем api#317/preland#17 по согласованным Q1/Q2/Q3. Каталог согласий: коммит 5dea110, независимое ревью APPROVE, 58 DB-проверок включая concurrent default PASS. Админка готова к реальным HTTP/UI-проверкам, отдельный Docker стенд localhost:4337 (чужой стенд 4317 сохранён). Runtime cons/Join и адаптация прежних regression checks выполняются отдельно, без удаления legacy полей тарифов. Preland: все 14 standalone PHP checks и release manifest (213 ресурсов) PASS; точечный runtime config patch сохраняет соседние поля и пользовательские настройки cons при повторном deploy. Выпуска ещё нет; задачи остаются открыты до UI-приёмки, интеграционного gate и доставки.
Author
Owner

Приёмка и независимые ревью этапов завершены: каталог APPROVE, CPanel APPROVE, runtime/full API APPROVE, Preland APPROVE. Исправлены найденные ревью дефекты: переполнение срока cookie, SQL500 при cons вне PostgreSQL integer, восстановление удалённой группы из cookie другой вкладки, JSON-типы соседних ключей runtime config, inline-ссылки information в flex-строке. Реальный браузер: CPanel33 checks, Join40, Preland11 (file503→retry→реальныйcreate→claim→чистыйTour и IndexedDBReload), Private8, responsive320/7366 PASS. Ввод/клики/ошибки/восстановление проверены, только строками/HTTP200 приёмку не заменяли. Готовим окончательный immutable image и полный штатный regression gate перед разрешённым выпуском. Preland остаётся только zoomstage.online. Пока не выпущено, задачи открыты.

Приёмка и независимые ревью этапов завершены: каталог APPROVE, CPanel APPROVE, runtime/full API APPROVE, Preland APPROVE. Исправлены найденные ревью дефекты: переполнение срока cookie, SQL500 при cons вне PostgreSQL integer, восстановление удалённой группы из cookie другой вкладки, JSON-типы соседних ключей runtime config, inline-ссылки information в flex-строке. Реальный браузер: CPanel33 checks, Join40, Preland11 (file503→retry→реальныйcreate→claim→чистыйTour и IndexedDBReload), Private8, responsive320/7366 PASS. Ввод/клики/ошибки/восстановление проверены, только строками/HTTP200 приёмку не заменяли. Готовим окончательный immutable image и полный штатный regression gate перед разрешённым выпуском. Preland остаётся только zoomstage.online. Пока не выпущено, задачи открыты.
Author
Owner

Реализован и выпущен конструктор согласий cons: единый каталог общих/тарифных checkbox и информационных текстов, произвольные варианты одного тарифа, группы с позициями 01–99, начальной отметкой, пустым составом и единственным default. CPanel следует действующему tp-интерфейсу; «назначить» выглядит обычной ссылкой, сохраняет POST/CSRF. Предпросмотр находится под каждой группой.

Согласованные Q1/Q2/Q3 выполнены: исходные cons1 — одно отмеченное согласие, cons2 — документы+тарифный текст без отметок, API default2; Preland rnd100%1. Отдельная signed cookie72ч с первого выбора, без продления, cookie выше новой ссылки, TTL редактируется. Каждая смена тарифа заново применяет отметки группы, A→B→A тоже. Это информирование и UI-допуск, банковский режим продления не меняется. Старый chb игнорируется во всех активных переходах/контекстах/recovery; начатая воронка сохраняет свой cons. Старые тарифные checkbox_text/редактор и исходные общие настройки сохранены, реальные тексты скопированы. Удаление старых тарифных полей ждёт отдельного разрешения владельца.

Доставка:

  • API master 4cae08b3b47e67b3406cffc6d5886bdabe778b71, тег v2026.10.24.1, run475/job676 SUCCESS. Workflow выполнил image gate, preflight, backup, deploy и smoke.
  • Preland code 89cc16e, run476 SUCCESS; точный проверенный stage config snapshot f4ce5afdc4a1860a448c9a022e61cd4e8bec8167, run477/job679 SUCCESS. Только zoomstage.online; zoompixel production не обновлялся. До/после проверены все соседние runtime config поля и финальные bytes, изменения ограничены chb/cons.
  • Фактический runner во всех выпусках37 zoomzilla-prod-org.

Проверки: baseline и финальный immutable image gate PASS (87 миграций/49 этапов; catalog60/admin33/funnel27/seed11), 271 адаптированная regression-проверка, все14 Preland tests/213 ресурсов. Реальный браузер: CPanel33, Join40, Preland11 с upload503→retry→настоящийcreate/claim и legacy IndexedDBReload, Private8, responsive320/7366. Desktop1440/mobile390 и визуальная проверка выполнены. Все независимые ревью APPROVE; найденные TTL/cons overflow, stored fallback, JSON types и information-link flex дефекты исправлены и перепроверены. Первые неуспешные clean-image gate сохранены в журнале: runtime bootstrap тестового harness приведён к production entrypoint, устаревший source-contract remember заменён rememberStored без ослабления поведения.

После выпуска в IAB выполнены настоящие Index→GP→Join1034 и stage→claim→GP→Join1035; проверены чистые URL, две снятые галочки, смена тарифа/его реального текста и disabled continuation. Регистрация/платёж на production не отправлялись.

Граница доказательств: production CPanel требует недоступную текущему IAB Basic Auth, поэтому его production CRUD не объявлен пройденным. Авторизованный CPanel CRUD реально проверен на изолированном стенде, SSR и серверный контракт — также в финальном image gate. Доставка и обязательный пользовательский сценарий проверены; эта граница указана в отчёте, а не скрыта.

База знаний опубликована коммитом 0801c26: спецификация, план/workflow, руководство «Управление согласиями cons», отчёт выпуска и актуализация старых chb/UTM заметок. Открытых обязательных работ в согласованном объёме нет; api#317 и preland#17 закрываются.

Реализован и выпущен конструктор согласий cons: единый каталог общих/тарифных checkbox и информационных текстов, произвольные варианты одного тарифа, группы с позициями 01–99, начальной отметкой, пустым составом и единственным default. CPanel следует действующему tp-интерфейсу; «назначить» выглядит обычной ссылкой, сохраняет POST/CSRF. Предпросмотр находится под каждой группой. Согласованные Q1/Q2/Q3 выполнены: исходные cons1 — одно отмеченное согласие, cons2 — документы+тарифный текст без отметок, API default2; Preland rnd100%1. Отдельная signed cookie72ч с первого выбора, без продления, cookie выше новой ссылки, TTL редактируется. Каждая смена тарифа заново применяет отметки группы, A→B→A тоже. Это информирование и UI-допуск, банковский режим продления не меняется. Старый chb игнорируется во всех активных переходах/контекстах/recovery; начатая воронка сохраняет свой cons. Старые тарифные checkbox_text/редактор и исходные общие настройки сохранены, реальные тексты скопированы. Удаление старых тарифных полей ждёт отдельного разрешения владельца. Доставка: - API master `4cae08b3b47e67b3406cffc6d5886bdabe778b71`, тег `v2026.10.24.1`, [run475/job676 SUCCESS](http://git.dira89kv.beget.tech:3000/anton/api/actions/runs/475). Workflow выполнил image gate, preflight, backup, deploy и smoke. - Preland code `89cc16e`, [run476 SUCCESS](http://git.dira89kv.beget.tech:3000/anton/preland/actions/runs/476); точный проверенный stage config snapshot `f4ce5afdc4a1860a448c9a022e61cd4e8bec8167`, [run477/job679 SUCCESS](http://git.dira89kv.beget.tech:3000/anton/preland/actions/runs/477). Только zoomstage.online; zoompixel production не обновлялся. До/после проверены все соседние runtime config поля и финальные bytes, изменения ограничены chb/cons. - Фактический runner во всех выпусках37 `zoomzilla-prod-org`. Проверки: baseline и финальный immutable image gate PASS (87 миграций/49 этапов; catalog60/admin33/funnel27/seed11), 271 адаптированная regression-проверка, все14 Preland tests/213 ресурсов. Реальный браузер: CPanel33, Join40, Preland11 с upload503→retry→настоящийcreate/claim и legacy IndexedDBReload, Private8, responsive320/7366. Desktop1440/mobile390 и визуальная проверка выполнены. Все независимые ревью APPROVE; найденные TTL/cons overflow, stored fallback, JSON types и information-link flex дефекты исправлены и перепроверены. Первые неуспешные clean-image gate сохранены в журнале: runtime bootstrap тестового harness приведён к production entrypoint, устаревший source-contract remember заменён rememberStored без ослабления поведения. После выпуска в IAB выполнены настоящие Index→GP→Join1034 и stage→claim→GP→Join1035; проверены чистые URL, две снятые галочки, смена тарифа/его реального текста и disabled continuation. Регистрация/платёж на production не отправлялись. Граница доказательств: production CPanel требует недоступную текущему IAB Basic Auth, поэтому его production CRUD не объявлен пройденным. Авторизованный CPanel CRUD реально проверен на изолированном стенде, SSR и серверный контракт — также в финальном image gate. Доставка и обязательный пользовательский сценарий проверены; эта граница указана в отчёте, а не скрыта. База знаний опубликована коммитом `0801c26`: спецификация, план/workflow, руководство «Управление согласиями cons», отчёт выпуска и актуализация старых chb/UTM заметок. Открытых обязательных работ в согласованном объёме нет; api#317 и preland#17 закрываются.
yury closed this issue 2026-10-24 04:09:56 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anton/preland#17