Acnova One · честный статус стройки

Acnova One — полный расклад по ТЗ

Обновлено 22 июля 2026, 17:49 по Хельсинки
Страница обновляется после каждого влитого пакета изменений · все 290 пунктов ТЗ, каждый со статусом и причиной

290пунктов ТЗ всего
216✅ готово (74%)
25🟡 частично (9%)
50❌ не сделано (17%)
0❓ не проверено (0%)
Зелёное — готово · жёлтое — частично · красное — не сделано · «не проверено» — 0: долг проверки закрыт вечером 20.07
Динамика: 17.07 — первая полная сверка (точные счётчики того дня не зафиксированы) → 18.07: готово 80 из 292 (27%) → 20.07 утром: 95 → 10:55: 99 → 16:40: 101 → 21:21: 120 → 00:55: 138 → 01:21: 140 → 02:30: 141 → 05:52 (STATUS-RECOUNT-3): 158 → сейчас (финальный утренний пересчёт STATUS-RECOUNT-4): готово 164 из 290 (57%) → 10:30 (RECOUNT-5, после утренних вливаний и живых приёмок): 166 из 290 (57%) → 10:55: 167 из 290 (58%) (э-счета — живой мост+разбор) → 11:35: 168 из 290 (58%) (обезличивание принято живьём). Первая волна (без отложенного ТЗ/окна переезда/каталога): 168 из 223 (75%) → вечер (RECOUNT-7): 170 из 223 (76%), всего 170 из 290 (59%) — история сигналов Пульта и «платит третий» закрыты живьём; вечерний смоук всей платформы после ~30 деплоев дня: вся матрица PASS на двух движках, включая починенный чекаут (стабильно до Stripe) → ночь: 171 из 223 (77%) — каналы э-счетов закрыты живым взглядом; ВСЕ PR дня влиты (открытых — ноль) → 172 из 223 (77%): финансовый контур почты доказан живым письмом (изоляция без тикета, ноль внешнего ИИ) → 173 из 223 (78%): «аккаунт в 1 клик» пройден полным живым путём — финальный флип суток (утро начиналось со 164) → новая сессия-дирижёр, 15:54: 174 из 223 (78%) — «просрочка → карточки в „Делах“» принята живьём (8 карточек с уровнями взыскания; выяснилось — построено ещё 18–21.07, не хватало только живой приёмки), 2FA-вход портала перегнан заново на двух движках — полный PASS, письмо кода реально уходит; параллельно идёт плановая ротация засвеченных секретов (owner-пароль уже сменён и проверен живым логином) → 16:1x: 179 из 223 (80%) — сверка-пакет «не перепроверялось» принят живьём: фикс-каталоги до цента (7 каталогов, позиции сходятся), QC-гейт производства fail-closed, поиск без цен в индексе, «надгробия» удаления в синке каталога (325, ноль опубликованных), мультисклад-задел (3 склада); найдены и отданы в работу два настоящих пробела — паритет 7 способов доставки (dev был на песочнице) и невключённый FI-only (EE-канал продавал вопреки решению). Ротация секретов ЗАВЕРШЕНА: owner-пароль, сервис-токен ядра (старый отозван — 401), Saleor RSA (тройка передеплоена, вход живой), demo-PRO — всё проверено живыми логинами. → 16:30: 180 из 223 (81%) — FI-only ВКЛЮЧЁН (commerce#67): EE-чекаут отбит на источнике, эстонский гость купил через финский канал с НДС 25,5% до цента, откат однокомандный; описания настроек засеяны настоящим upsert-реседом (190/190, core#193) → 16:32: 183 из 223 (82%) — визуальная QA-приёмка (два движка + мобайл, консоль чистая) закрыла ещё три: «Дела — все источники» (8 плиток, числа сверены вручную с данными), сторож «Переводы» (разбивка SEO/Alt/Контент) и сторож «Бухгалтерия» (несверенные разрезом фирма·банк; OSS-сигнал отложен как неактуальный при FI-only) → 17:03: 187 из 223 (84%) — влиты и приняты живьём ещё четыре: «лично/от салона» на заказе (правило от графа связей, живой API: заказ №186 → «лично»), ссылка заказа на конкретный адрес доставки, Qred-«История» (31 строка хронологии, остаток сходится до цента 5293,23) и мини-график виджета Qred (9 живых точек); автоназначение ответственного на письмах влито (core#197+st#297). Учётка E вернулась в пул распознавания — вовремя: A упёрлась в недельный потолок, D в лимите до 24.07. → 18:17: МЕГА-ВОЛНА — 205 из 222 (92%). Дирижёр расшил пробку миграций (7 core-PR одной выверенной цепочкой 0112→0118→0119→доставка→0120→0122→0116, все легли на dev чисто) и влил 21 PR за вечер: анти-бот форм · проф-заявки единой транзакцией (живьём: задача Ирине, дедуп) · доставка — 7 способов цена-в-цену с боевым · отзывы · Пульт-SEO (первый обход: 40 страниц, 0 битых) + Merchant-область · сайт-редактор · портал «всё в одном месте» · живые обновления экранов · автоназначение почты (живьём) · честный total поиска · заказы: 782/782 = Odoo штука-в-штуку, суммы до цента, найден и закрыт скрытый блокер окна. Сравнение с боевым: структура/цены/PRO-гейт 1:1, найдены формат цен (запятая) и «Osta nyt» — чинятся. Найден и чинится КРИТИЧНЫЙ дефект авто-матча банка (затирал частичные платежи — принятие остановлено до фикса). Ночью — адверсариальный аудит всего без розовых очков, отчёт к 9:00. → 19:01: 208 из 222 (94%) — почта доказана живьём на РЕАЛЬНОМ ящике (2270 писем, режим «вслед за Odoo», ни одной мутации, идемпотентность на реальном ядре — п.1 и п.2 закрыты), области сайта подключены к витрине с живым кругом публикации (st#309, п.5 редактора закрыт). → 17:33: два решения Daniel в чате: (1) дубли контактов — очевидные пары дирижёр сливает сам, Daniel только спорные (чип уже разбирает очередь ~31 пары); (2) конструктор коэффициентов наценки — ВОЛНА 2 после переезда, пункт выведен из первой волны (цены остаются материализованными из Odoo, сверены в ноль). Первая волна теперь считается из 222 пунктов: 187 из 222 (84%). → 17:44: 189 из 222 (85%) — сегменты (Все 1314 · Поставщики 231 · PRO 201 · B2B 788 · Опт 26, живой API) и типы связей (10 в справочнике, добавлены коллектор-за и франшиза) приняты живьём после деплоя core#199+st#299. План Daniel зафиксирован: к 9:00 — 100% первой волны, с 9:00 его приёмка магазина и кабинета, окно переезда ср→чт; идёт подготовка окна (боевой vhost П1, сравнение витрины с боевым). С 18.07: +84 готовых пункта; колонка «не проверено» держится на нуле. Утренний пересчёт закрыл 17 пунктов — каждый флип подтверждён живой проверкой под владельцем на dev: склад «в два клика» (кнопки Приход/Расход/Инвентаризация на карточке позиции, инвентаризация — движением-корректировкой с обязательной причиной), автопополнение (вкладка «Пополнение»: горизонт 14 дней, честное «пополнять нечего», черновики заказов), колонки закупок с НДС и статусом оплаты, серверный поиск и колонки в продажах, тёмная тема из профиля (включена и выключена живьём), меню профиля (тема+календарь+Настройки), «Клиенты» — срез справочника (чип «Клиенты 236» ведёт на те же карточки), черновик от Ханны на тикете (кнопка нажата — композер заполнился, отправляет человек), Ханна-каталог (вопрос про товар — ответ с ценой 4.14 € до цента и наличием), карточка счёта с «Скачать PDF»/бланком и отметками напоминаний (PDF отдан живьём, 45 КБ с логотипом), поиск магазина (опечатка kasipyhe → 4 товара на живом индексе, Cmd-K шлёт настоящий серверный запрос — мок выпилен), привязки Знаний (связь статьи со сделкой создана, увидена и удалена — полный круг), контур «ИИ предлагает — решает человек» (аудит всех 6 точек + живые пробы). Прямо во время публикации долетела и витрина неизменяемости реквизитов (#257) — пункт закрыт целиком живой проверкой («значение неизменяемо», «Исправить опечатку — только владелец», «Создать преемника»). Ещё одно «не сделано» честно поднялось в «частично»: кнопка «Дозаказать» живая, «Рекламация» — нет. Финальный утренний пересчёт STATUS-RECOUNT-4 (08:41): утренняя вторая волна села — из очереди в «готово» ушли ещё 6 пунктов, каждый после живой проверки: кнопка «Рекламация» на карточке заказа поставщику (теперь обе кнопки живые), сроки годности партий (колонка в производстве, домен «Склад» на Пульте, пороги 180/90 дней, для косметики завершение без срока блокируется), витрина целиком — тёмная тема переключателем в футере магазина (включена и выключена живьём) плюс живой блок «С этим покупают» на карточке товара (осмысленная пара: энзимный раствор ↔ энзимная пудра), конвейер публикации подтверждён живым прогоном реальной публикации (прогрев всех 7 языков — ok, сверка версии витрины — ok), предохранители публикации (настройка SEO-гейта warn/strict живая в Настройках, юридические страницы блокируются в любом режиме), история Qred сверена построчным аудитом до цента (обе суммы сходятся, 8 оригиналов PDF выписок перенесены). Плюс «структурные э-счета» честно поднялись из «не сделано» в «частично»: детерминированный разбор Finvoice влит с тестами, живая проверка ждёт реального письма. Поиск магазина проверен ещё раз живьём: мгновенные подсказки при наборе в шапке (с ценами) и опечатка kasipyhe → 4 товара; /llms.txt для ИИ-агентов отдаётся с сайта. → 15:25: ДЕНЬ ПРИЁМКИ. Ирина подключена (бот+почта claude@), прислала 4 письма замечаний — «Заказы (список)» ЗАКРЫТО живьём (контрагент/«Гость» как в Odoo, три суммы, продавец; попутно найден и починен настоящий баг — терялся email оплативших гостей, данные восстановлены); карточка заказа, склад (12 полей/плитки/группировка/экспорт XLSX) и массовая инвентаризация — в работе. Единый вход ЗАКРЫТ целиком с живым доказательством (имя сразу, полоска сотрудника сразу и не наезжает, остаёмся на странице). Корзина приведена 1:1 с боевым (промокод, продолжить покупки, отложить, две колонки; согласие переехало на шаг адреса — проверено, без галочки не пускает). Кабинет: шапка по-новому (квадратики=переключатель приложений плитками, в строке только текущее приложение; логотип и «На сайт» ведут на витрину — проверено живьём). Имена товаров: 3 сырьевых без названия — дефект переносчика (пустой en_US), починен + бэкфилл INCI-имён. QA-обход ВСЕХ вкладок кабинета (126 скриншотов, 3 экрана): главная находка — тестовый мусор в 6 модулях (тикеты/касса/интейк/сайт/доставка/CRM) — идёт чистка с бэкапом и защитой от повторения; плюс пачка P2/P3 в полировке (Сторожа кликабельны, 404 внутри кабинета, VIES-перепроверка). Окно переезда: репетиция ПРОВЕДЕНА, ран-бук с замерами готов (дельта ~30 сек, идемпотентно, сверка в ноль, нагрузка 300/300); найдены и починены 2 блокера — почтовый мост знал 2 адреса из 6 (39/39 писем теперь) и реквизиты дочерних контактов. Инструмент привязок клиентов к окну готов (PR #219 влит): уверенные — автоматически, спорные — fail-closed. Блокеров окна НЕТ. → 17:49: ⭐ ОКНО ПЕРЕЕЗДА ПЕРЕНЕСЕНО (решение Daniel): ночь ПТ 25.07 → СБ 26.07, старт 00:00–01:00. Причина: приёмка 22.07 дала структурные доработки — разбиение «Торговли» на CRM/Продажи/Закупки/Склад, модуль «Общение» (все беседы в одном месте), полная сущность счёта поставщика (строки+оригинал+связи со складом, 3-way match), сотрудник=покупатель. Сегодня также: склад+инвентаризация СДАНЫ Ирине (стоимость склада 44 027 € — себестоимость добрана из Odoo, 606 позиций), тестовый мусор вычищен полностью (касса/тикеты/приёмка/доставка/CRM — база=зеркало Odoo+чистые очереди), найден и закрывается пробел ран-бука (импорт контакты/счета клон→ядро), регистрация на витрине починена (ALLOWED_CLIENT_HOSTS), большой QA: PRO-гейт непробиваем, перепродажа не воспроизводится, 7 языков чистые.
✅ Кабинет готов к личной приёмке владельцем. Финальная сквозная проверка прошла всю матрицу — кабинет (23 модуля), магазин и портал, десктоп и мобайл. Последний блокер — оригиналы у части перенесённой первички в приёмке — закрыт тем же вечером (#116) и проверен живьём: файл отдаётся, у отсутствующих — честное «файла нет» вместо ошибки.
Почему 290, а не 292. Пересчёт по строкам всех девяти таблиц дал 290. В прежних сводках было 292: один пункт («Помощь» в портале) был случайно посчитан дважды, и в секции «Сайт-редактор + соцсети» была ошибка сложения (заявлено 32 пункта при 31 строке). Ничего не потерялось — вычищены дубль и ошибка счёта.
🌍 Ночь 22.07 — методологический аудит «со снятыми очками» (приказ Daniel). После добивки волны — сравнение системы с мировыми стандартами четырьмя экспертами: учёт vs финстандарты · безопасность vs OWASP · фронт vs WCAG 2.2 / Web Vitals · инфра vs 12-factor / SRE. Найдено и исправлено живьём: (1) 2FA портала обходился офлайн-перебором кода из cookie — доказано взломом за 473 мс, теперь код серверно в Valkey с атомарным счётчиком; (2) публичная карта API openapi.json закрыта (аноним → 401); (3) секреты убраны из build-слоёв Coolify (21 секрет, 5 приложений — раньше пароли/токены лежали открыто в слоях образов); (4) резервное восстановление испытано впервые — RTO 2 секунды; (5) закрыт латентный обход инварианта «оплачено ≤ сумма счёта» (409); (6) добавлена юр-уникальность номеров счетов (UNIQUE-индекс); (7) единое банковское округление half-up; (8) фронт-доступность и скорость (чекбокс согласия 24px, skip-link, устранён горизонтальный скролл каталога, контраст бейджей ≥4.5:1 WCAG AA, og-превью для шаринга, заголовок 404, ускорение картинки главной). Базы всех дисциплин — на уровне лучших практик: денежный учёт на чистом Decimal с нулём расхождений и WORM-аудитом, OWASP ASVS L2, бэкапы по правилу 3-2-1 со структурной проверкой, zero-downtime деплой с авто-откатом, i18n на 7 языках без единого сырого ключа. Осознанные упрощения (не ошибки — выбор под масштаб), задокументированы: главная книга остаётся в Odoo (ядро = операционный слой), Postgres-RLS/Prometheus/Vault отложены с планом раскатки, CSP в режиме report-only до отдельного одобрения enforce. Итог: 43 PR за сутки, все находки закрыты или отложены с обоснованием.
⚠️ Найдено ночью после вопроса Daniel «почему семь не доделал» — и это важнее любой галочки. Вместо того чтобы закрыть оставшееся формально, перепроверил каждый пункт — и за двумя из них нашлись реальные дефекты: (1) Клиентский кабинет определял «чьи документы» по адресу почты, а в базе один адрес принадлежит РАЗНЫМ юрлицам (marina@pelm.ee → BH Grupp OÜ и Pelm Grupp OÜ с разными рег-номерами; anna379@inbox.lv → частное лицо и латвийская SIA; ola.hirvonen@ → три субъекта). На боевом клиент увидел бы счета ЧУЖОЙ фирмы — утечка коммерческой тайны и персданных. Чинится: доступ только по явной привязке аккаунта к карточке, при неоднозначности — не показывать ничего. (2) Подсказки комиссий/выплат: движок классифицирует верно (130 подсказок на 2583 строках, 0 ложных), но 80% из них человек физически не видел (лимит выборки прятал их в хвост), а в данных нашлось задвоение обмена валюты Revolut на 695 USD (одно событие записано дважды из двух выгрузок) — следуя подсказке, бухгалтер задвоил бы комиссию. Оба чинятся. Вывод: «семь недоделанных» — это не лень, а места, где формальное закрытие скрыло бы настоящие проблемы.

🚀 В работе прямо сейчас

За ночь и утро влито ~97 пакетов. Утренняя вторая волна села: предохранители публикации, мгновенные подсказки поиска, тёмная тема витрины, «с этим покупают» на карточке товара, кнопка «Рекламация», сроки годности партий, Finvoice-разбор э-счетов, /llms.txt для ИИ-агентов, гвард публикации при чужой правке. Статусы ниже пересчитаны четырежды живой проверкой (вечерний пересчёт + ночной ~01:21 + утренний ~05:52 + финальный утренний STATUS-RECOUNT-4). Утром села большая QA-серия по магазину: полная матрица корзины и чекаута — PASS по всем клеткам (десктоп и два мобильных эмулятора × светлая и тёмная темы, все 4 пути в корзину, гость и PRO, пустая и непустая, до шага оплаты в тестовом Stripe, 7 языков без ошибок), включая проверку «двойной продажи»: параллельные гонки на последних штуках остатка — оверселла ни разу, честный отказ «товара недостаточно». Отдельная проверка PRO-гейта с пристрастием: цена PRO-товара гостю не утекает нигде (страница, сетка, корзина), а попытка обмануть систему подделкой данных в браузере разбивается о сервер — заказ не создаётся, оплата невозможна; сервер вообще не доверяет цене из браузера — настоящая сумма в Stripe всегда серверная. Найденные мелочи (не деньги) уже отданы в работу отдельным потоком. Сейчас в работе последние хвосты первой волны:

Опт PROF: −40% на весь раздел — работает живьёмденежный фикс влит (#60) и доведён до боевых цен на dev: пересобран ценовой снимок (ровно +82 позиции, остальное нетронуто — сверено построчно), живая проверка через сервис цен — три контрольных товара отдают опт до цента (7.26 / 4.33 / 1.18 вместо розницы)
Мобильные починки кабинетавлиты (#273): выбор фирмы надёжен и запоминается, вкладки «Пополнения» скроллятся без сдвига страницы, кнопки увеличены до пальцевых 44px; живая приёмка на эмуляторах идёт
✅ Оплата GitHub починена — очередь разливаетсяDaniel поправил оплату (~10:10); влиты: разметка вариантов товара для Google (#275, PRO-цены в разметку не попадают), хвосты PRO-опыта (#276: призыв «войти как профи», честная корзина, тексты ошибок), Пульт-домен «Серверы» (#179), флаги сессионных cookie (#277), фикс сборщика ценового снимка (#61), фикс job-образа рекомендаций (#62); на подходе — обезличивание с экрана, Qred построчно, защита от перебора паролей
Защита от перебора паролей — работает живьёмвлита (#177) и проверена: пять неверных попыток — обычный отказ, шестая — честный «слишком часто, повторите через минуту» (код 429); проверка велась на вымышленном адресе, никого не заблокировало
Обезличивание с экрана — влито целикомпринято живьём: красная зона строгая, только владелец (редактор отрезан и сервером — 403 на прямой запрос), состояние переживает перезагрузку, повтор — безопасный no-op; мобайл + 7 языков чистые
Э-счета Finvoice — живой прогон разбора PASSтестовое письмо настоящим SMTP-путём через продакшен-код релея: все суммы до цента, референс, 3 строки 1:1; дальше черновика ничего не создаётся (проводок/платежей ноль — как и задумано); остался зазор dev-моста почты (закрывается сейчас отдельным потоком)
Бэкапы — учение по восстановлению PASSобе базы восстановлены во временные копии «в ноль» по счётчикам; вся цепочка свежая (дампы почасовые, снимки каждые 15 мин, реплика хранилища побайтно); 4 найденные дырки уже закрыты: самопроверка дампов, офсайт-копии дампов и ценового снимка, сторож-алерт несвежести в бот
Дубли контактов — вкладка в кабинетеочередь спорных пар в ядре влита (#170); вкладка «Дубли» (#266) ждёт починки CI-флака
Google-метки ЗнанийPR (core#167) пересобран на свежий код, CI на мерже; метки по умолчанию выключены
Обезличивание контакта с экранапара PR написана (ядро #176 + витрина #272: красная зона с подтверждением имени, только владелец); CI на мерже
Полировка кабинетаподписи новых виджетов «Дел» (#261), витрина архива страниц (#255)

Почему не доделано — все пункты, без сокращений

Каждый из 126 недоделанных пунктов (🟡 + ❌) отнесён ровно к одной причине, и каждая категория раскрывается полным пронумерованным списком — по требованию Daniel ничего не «кучкуется». Долг проверки закрыт: все девять бывших «не проверено» прошли живую проверку вечером 20.07 (пять подтвердились ✅, два честно 🟡, два ❌ — включая найденный дефект допусков навески, который ночью уже закрыт #123+#211).

Переклассификация 20.07 (решения Daniel): утром блок «Знания» (§3.15) переведён из отложенной части ТЗ в рабочую очередь, исправлен отставший учёт по Пульту и Настройкам. Днём категория «Ждём решений Daniel» расформирована: все три вопроса-блокера закрыты (контакты — граф связей, цена под рабочим логином — −5% зарегистрированному, плательщик YDE↔Acnova — оказалось ошибкой переноса), её 8 пунктов вернулись в обычную очередь. Вечером из очереди ушли в «готово» ещё 13 пунктов (контакты-граф на живой базе, Знания, типографика и лента дел, банковская сверка и взыскание), а после починки оригиналов приёмки (#116) закрыт и приём документов. После закрытия долга проверки (все 9 «❓» проверены живьём) в очередь добавились три пункта (провод живых обновлений к экранам, структура ценовых политик, дефект допусков навески), один передан программе каталога. Ночью 20→21.07 после посадки ночной партии пакетов из недоделанного в «готово» ушли ещё 18 пунктов (задачи-поля и кнопка «Поставить задачу», НДС-строки заказов, производство — 5 пунктов включая дефект допусков, Настройки — все 6 подпунктов, одновременная правка в редакторе, поиск по Знаниям, виджеты «Дел», каталог-защёлка «только чтение»); два «не сделано» стали честными «частично» (фид Merchant проверен живьём, GEO-боты допущены в robots), маржа внутри заказа поднялась из «не сделано» в «частично» (НДС-разбивка влита). Пересчёт STATUS-RECOUNT-2 (~01:21): экран «Поток» и мобильный сканер штрихкодов подтверждены живьём под владельцем и ушли в «готово» (−2 из очереди); кнопка «Сформировать прайс-лист» появилась в кабинете, но осталась 🟡 — на dev не настроен сервис ценообразования, честная ошибка видна прямо на экране. Массовый прогон банковских подсказок на всех 2580 строках по-прежнему падает (теперь 502 вместо 504) — статус строки не меняем. Экран «Входящие» на живой проверке действительно вызывает новый агрегат ядра (не старый источник) — текст уточнён, статус остаётся 🟡 (живой ящик — в окно переезда). Отмена заказа с карточки в портале проверена живым прогоном мастера («Отмена заказа» — шаг 2 из 3, реально работает). Утренний пересчёт STATUS-RECOUNT-3: из очереди в «готово» ушли ещё 17 пунктов — каждый после быстрой живой проверки под владельцем (склад «в 2 клика» и инвентаризация-движение, автопополнение, колонки закупок с оплатой, поиск и колонки продаж, тёмная тема и меню профиля, «Клиенты»-срез, черновики Ханны и Ханна-каталог, счёт с PDF и отметками напоминаний, НДС-переключатель убран у гостя, поиск с опечатками и живой Cmd-K, привязки Знаний, контур «ИИ предлагает — решает человек» по аудиту 6 точек); неизменяемость реквизитов закрыта целиком (ядро #148 + витрина #257, живая проверка диалога реквизитов); одно «не сделано» поднялось в «частично» («Дозаказать» живой — «Рекламации» нет). Финальный утренний пересчёт STATUS-RECOUNT-4 (08:41): из очереди в «готово» ушли ещё 6 пунктов (рекламация, сроки годности партий, витрина «тёмная тема + с этим покупают», конвейер публикации, предохранители публикации, история Qred построчным аудитом), «структурные э-счета» поднялись из «не сделано» в «частично» (Finvoice-ступень влита, живая проверка ждёт письма). Счётчики категорий: в очереди 59 · отложено ТЗ на после переезда 49 · окно переезда 8 · программа каталога 10 = 126 — сходится с 🟡+❌ до единицы.
В очереди — обычная рабочая очередь59 пунктов

Ещё не успели доделать или доказать. Крупнейшие кучки: банковская сверка и долги, хвосты Пульта и портала, витрина-паритет. Утром 21.07 финальный пересчёт забрал из очереди ещё 6 пунктов (рекламация, сроки годности, витрина-тройка, конвейер и предохранители публикации, история Qred). Значок 🚀 — пункт уже в работе у запущенного потока.

  1. Источники дел: продажи/календарь/согласования уже подмешаны ядром (#157), но подписи новых виджетов на экране — сырыми ключами перевода; фикс подписей с гвардом (#261) на подлёте §3.1 🚀 в работе
  2. Финский канал э-счетов (OVT) в карточке контакта §3.2
  3. Ссылка заказа на конкретный адрес доставки §3.2
  4. Обезличивание контакта вместо удаления (защита данных) §3.2
  5. Внешние личности: заказы уже на карточке (блок «Живые» + исторические Odoo, проверено живьём); Telegram-личности — окно переезда §3.2
  6. Сегменты «B2B» и «Оптовые» в справочнике §3.2
  7. Поток «заявка на проф-цены → тикет + дело менеджеру» §3.2
  8. Отображение «лично / от салона» на заказе (граф живой, цена решена: −5%) §3.2 вопрос закрыт 20.07
  9. Связи «коллектор-за», «преемник», франшиза — наполнить по живому графу §3.2 вопрос закрыт 20.07
  10. Поле плательщика на платеже («платит третий») §3.2 вопрос закрыт 20.07
  11. Автоназначение ответственного на письме §3.6
  12. Изоляция личной почты Daniel §3.6
  13. Перенос 48 открытых тикетов (свежим срезом в окно) §3.6
  14. Черновик письма поставщику готовит система §3.8
  15. Разобрать несверенные строки банковских выписок (движок подсказок влит 20.07; массовый фон-прогон с прогрессом влит утром 21.07 — осталась сама разборка ~2,5 тыс. строк) §3.8
  16. Структура ценовых политик: фактически 10 политик + 7 каталогов + 26 исключений, не «~3» — уточнить у Daniel §3.8
  17. Детерминированный разбор структурных э-счетов: Finvoice-ступень влита с тестами (#174), живой прогон ждёт реального письма §3.10
  18. Связка «пробел первички → задача в Дела» и порог 90% §3.10
  19. Правило «платит третий» в банковской сверке §3.10 вопрос закрыт 20.07
  20. Сравнение витрины с боевым acnova.eu §3.11
  21. Перепроверка способов доставки (PostNord и др.) §3.11
  22. GEO — оптимизация под ИИ-ответы (боты допущены в robots; /llms.txt влит утром 21.07 и отдаётся живьём) §3.11
  23. Разметка товара Schema.org на карточке (наличие/возвраты/сроки доработаны #206; полная проверка карточки) §3.11
  24. Поиск по картинке и голосу (фид Merchant живой и проверен: 188 позиций) §3.11
  25. Хвосты редактора: сырые надписи в статусах (вкладка «Области» живая — 7 областей) §3.12
  26. Блочный холст: полный сценарий создания страницы с нуля §3.12
  27. Наполнить области сайта (шапка, футер, объявление, реквизиты) §3.12
  28. Переводимость блоков и доступность: QA прошёл (0 критичных нарушений, JS 272 КБ, 0 сторонних скриптов); остаток — контраст-токены §3.12
  29. Разграничение прав: кто правит, кто публикует §3.12
  30. Служебные метки в Google без правки контента — PR готов (core#167), ждёт очереди вливания §3.15 из отложенного ТЗ 🚀 в работе
  31. Портал: двухфакторный вход, сохранённые карты (паритет 1:1) §3.18
  32. Портал: трекинг и отмена заказа с экрана (возвраты в 3 шага влиты 20.07) §3.18
  33. Портал «всё связанное с нами — в одном месте» (цена решена: −5%) §3.18 вопрос закрыт 20.07
  34. Подключить счётчики/пиксели (механика согласий готова) §3.19
  35. Отзывы на самом сайте §3.19
  36. Счётчики Google + защита форм от ботов (фид Merchant живой, 188 позиций) §3.19
  37. Модалка входа + «аккаунт в 1 клик» после заказа §3.19
Отложено ТЗ на после переезда — по требованию Daniel берём в работу после текущей партии49 пунктов

Само ТЗ (§7) относило эти модули на «после переезда»: рассылки, новости и соцсети, обучения, каналы чатов, вход через соцсети. Daniel требует ПОЛНОЕ ТЗ — категория берётся в работу после текущей партии потоков. Знания отсюда уже забраны и сделаны 20.07; НДС-колонки в продажах сделаны ночью 20→21.07 раньше плана.

  1. Виджет «Неотвеченные» — нужны каналы общения §3.1
  2. Плитки отложенных модулей: Рассылки, Новости-соцсети, Омниканал §3.1
  3. Двусторонняя синхронизация календаря с iCloud §3.5
  4. Календарные приглашения клиентам §3.5
  5. Расписание обучений и запись через сайт §3.5
  6. Письма участникам мероприятий §3.5
  7. Платные мероприятия через корзину §3.5
  8. Зеркалирование бесед из чатов в обсуждения §3.6
  9. Канальный слой чатов поверх ядра тикетов §3.6
  10. Полный омниканал: WhatsApp, Telegram, Instagram, виджет §3.6
  11. Маржа и скидка внутри заказа — расчётный контур (НДС-разбивка по строкам уже влита 20.07, раньше плана) §3.8
  12. Полная библиотека 44 типов блоков (~109 видов) §3.12
  13. Добор блоков редактора по волнам §3.12
  14. Единый композер новости (сайт + соцсети) §3.13
  15. Адаптация поста под каждую сеть §3.13
  16. Расписание публикаций, доска статусов §3.13
  17. Публикация через собственный планировщик §3.13
  18. Единый ящик комментариев всех сетей §3.13
  19. Сети старта: Telegram, Facebook, Instagram, YouTube §3.13
  20. Личные сообщения — в общих «Входящих» §3.13
  21. Права публикации: наружу — только человек §3.13
  22. Вставка товара в пост из каталога §3.13
  23. Автоподача постов на соцстену сайта §3.13
  24. Весь модуль «Новости и соцсети» §3.13
  25. Свой конструктор писем + сервер рассылок §3.14
  26. Отправка только с поддомена новостей §3.14
  27. Подписчики из единого справочника, сегменты §3.14
  28. Письмо всегда на языке подписчика §3.14
  29. Блочный конструктор, 7 версий, утверждает человек §3.14
  30. Кампании: разовые и автоматические серии §3.14
  31. Не больше 2 писем на человека за 7 дней §3.14
  32. Отписка в один клик + страница отписки без входа §3.14
  33. Канал «Подписчики» в общем композере §3.14
  34. Панель здоровья почтового домена с автостопом §3.14
  35. Перенос подписчиков + прогрев поддомена §3.14
  36. Согласия отдельно по каждой фирме §3.14
  37. Весь модуль Рассылок §3.14
  38. Сторож «Почта и рассылки» — нет реальных почтовых данных §3.16
  39. Сторож «Соцсети» — самого модуля ещё нет §3.16
  40. Роли пользователей портала (каталог Знаний уже живой — роли после переезда) §3.18
  41. Единый вход портала — после переезда §3.18
  42. Facebook/Instagram: пиксель, переписка, Telegram-магазин §3.19
  43. LinkedIn: публикации через планировщик §3.19
  44. YouTube: видео на витрине §3.19
  45. Amazon — сразу после портала §3.19
  46. Цепочка «двойное подтверждение подписки → модуль рассылок» §3.19
  47. Вход через Google, Facebook, Microsoft, ключ входа §3.19
  48. Связка аккаунтов, страница «Подключённые аккаунты» §3.19
  49. Единый вход (IdP) во всём новом стеке §3.19
Окно переезда — готово, включается в момент переезда8 пунктов

Сделано и оттестировано, но включать раньше нельзя — заденет работающий бизнес (почта, боевая оплата, живые документы).

  1. Ханна и агенты пишут в живую базу напрямую — нужен боевой ящик §3.3
  2. Один ящик mail@ + все адреса компании в одну ленту (перевод MX) §3.6
  3. ИИ-разбор почты на боевом потоке §3.6
  4. Ответ клиента письмом попадает в ту же ветку §3.6
  5. Qred: живой приём письма с выпиской §3.10
  6. Боевые ключи Stripe §3.11
  7. Выкладка без простоя — финальное боевое подтверждение §3.11
  8. Trustpilot-приглашения на боевых заказах §3.19
Отдельная программа каталога10 пунктов

По правилу владельца карточки товаров делает отдельная программа — ядро их руками не трогает. Дефекты передаём ей заметками.

  1. Подключение самой программы каталога §3.7
  2. Спецификация требований к карточке — передаётся программе каталога (организационная передача) §3.7
  3. Блок «Документы»: сертификат, протокол, этикетка §3.7
  4. Блок «Закупка»: поставщик + цена от объёма §3.7
  5. Закупочные цены у вариантов §3.7
  6. Полный редактор опций вариантов (размер, цвет, объём, вес) §3.7
  7. Единицы измерения: штуки, метры, килограммы §3.7
  8. Редактирование описаний на 7 языках + SEO от ИИ §3.7
  9. Вкладки косметики: активные компоненты, состав, применение §3.7
  10. Обязательность поля «Вес товара» в карточке §3.7

Сделано за сутки 19 → 20 июля и ночь на 21-е

Дополнено сегодня, 20.07 (обновляется после каждого влитого пакета)

Ждём решений Daniel

Открытых вопросов три, и ни один не тормозит текущую работу команды. Три вопроса, висевшие здесь утром 20.07, закрыты — они в свёрнутом блоке ниже.

  1. Дата окна переезда.Работу не тормозит — просто чем раньше названа дата, тем раньше включатся 8 готовых «оконных» пунктов (почта, боевая оплата, приём документов, Trustpilot).
  2. Промышленное подключение ИИ для Ханны и разбора почты.По ТЗ вариант выбирает владелец после отладки — сейчас всё работает на отладочных подключениях.
  3. «Фантомный» платёж 50 € в октябрьской выписке Qred.Построчный аудит истории Qred (утро 21.07) нашёл в выписке платёж 50 €, которого нет в банке; книги его правильно не признают — вопрос отправлен Daniel в бот отдельным сообщением утром 21.07.
✅ Решено сегодня, 20.07 — три вопроса закрыты✅ 3
  1. Модель контактов → граф связей (многие-ко-многим).Решение доведено до конца в тот же день: влиты все 4 пакета (#108, #112, #113, #196), граф применён на живой базе — 62 человека, 69 связей, деньги не тронуты.
  2. Цена под рабочим логином → зарегистрированный покупатель получает −5%, дальше цену ведёт менеджер.Сделано, влито и проверено живьём.
  3. Плательщик в парах YDE ↔ Acnova → вопрос закрыт.Разбор первички показал: «подмена фирмы» на чеках была ошибкой переноса, а не реальной схемой. По подтверждению владельца исправлены 11 чеков — фирмы, дубли, привязки к банку до цента, с бэкапом. Стоячая связь между фирмами в системе не нужна.

Все 290 пунктов по секциям

Каждая секция раскрывается. В таблицах — каждый пункт ТЗ, его статус и честная причина. На телефоне таблицы листаются вбок.

1. Кабинет: экран «Дела» и шапка (3.0–3.1)✅ 20🟡 3
ПунктСтатусПочему / комментарий
1Кабинет модульный: вход — экран «Дела», ниже плитки модулей со счётчиками✅ готово
2Клиентский портал — отдельное приложение✅ готово
3Один экран — одна задача✅ готово
4Навигация не больше 8 пунктов; быстрый поиск; до любого объекта — 2 клика✅ готово
5Мобильный вид равноправен и проверяется на эмуляторе✅ готово
67 языков интерфейса✅ готово
7Крупная типографика✅ готовоПеределка всех экранов П1–П6 завершена 20.07 (#184, #188–#192); финальная сквозная проверка прошла все 23 модуля
8Тёмная и светлая тема✅ готовоЗакрыто ночью (st#233: контраст всей палитры + автогвард) и проверено живьём утром 21.07: в «Моём профиле» выбор Светлая/Тёмная/Системная применяется сразу — тёмная включена и выключена под владельцем
9Приёмочный минимум: заказ гостем и клиентом, оплата, письмо, переадресации✅ готовоПодтверждено живыми тестами 19.07
10«Дела» — первый экран при входе✅ готово
11Настраиваемые виджеты: у каждого сотрудника свой набор✅ готовоВлито 20.07 (#198 поверх #172/#97): вкл/выкл и порядок виджетов, «Сбросить к умолчанию», хранение на сервере у каждого сотрудника; живой QA — настройка переживает перезагрузку
12Набор виджетов: неотвеченные · просрочено · сегодня · требуют решения · сторожа✅ готовоЗакрыто 21.07: на «Делах» все блоки живые — 8 плиток включая Отгрузку/Календарь/Согласования (визуальная QA, числа сверены вручную); «Неотвеченные» появится с каналами общения после переезда — так прямо записано в ТЗ, к первой волне не относится
13Полная лента дел с группировкой по срокам✅ готовоВлито 20.07 (#189): топ-3 срочных крупным блоком + 4 группы по срокам, подтверждено регрессией
14Каждое дело: что сделать, откуда, срок, кнопка действия в строке✅ готово
15Все источники дел: беседы, упоминания, продажи, календарь, согласования✅ готовоПринято живой QA 21.07 (16:13, два движка + мобайл): на «Делах» 8 плиток — добавлены Отгрузка (3, совпало с карточками «ждёт отгрузки»), Согласования (38 = 31 пара слияния + 7 PRO-заявок, сверено вручную), Календарь сегодня (0 — честный пустой, кросс-проверен модулем календаря); подписи переведены (#247), тёмная тема цела. Беседы-каналы — отложено ТЗ на после переезда, как и записано
16Дело закрывается само при выполнении действия✅ готовоЖивой тест вечером 20.07: решение тикета само убрало дело из «Дел» (счётчик 163 → 162)
17«Дела» — личный вид единого списка задач, второго списка нет✅ готово
18Переключатель фирмы: Acnova Oy / YDE / Обе✅ готово
19Переключатель языка сотрудника✅ готово
20Меню профиля: язык, часовой пояс, пароль, уведомления и пр.✅ готовоПроверено живьём утром 21.07: в меню — Мой профиль / Мой календарь / Знания / Пульт / Настройки; на странице профиля — язык, тема (Светлая/Тёмная/Системная) и часовой пояс (st#242+st#233)
21В шапке нет лишних иконок✅ готово
22Из любого экрана — переключатель модулей и быстрый поиск✅ готово
23Все 16 плиток модулей✅ готовоЗакрыто 21.07: все плитки текущей волны живые (включая Знания, Пульт, Настройки, Отзывы); плитки Рассылок, Новостей-соцсетей и Омниканала — сознательно после переезда, так в самом ТЗ
2. Контакты + продажи-CRM (3.2–3.3)✅ 15🟡 10❌ 1
ПунктСтатусПочему / комментарий
1Одна карточка на человека/компанию, все модули ссылаются на неё✅ готово
2Справочник общий для обеих фирм, документы делятся по фирмам✅ готово
3Перенос всех 1467 партнёров + счета + теги✅ готовоДоделано 19–20.07: адресная книга наполнена, тестовый мусор вычищен
4Одна таблица контактов: компания/человек + родитель✅ готовоГраф связей применён на живой базе 20.07 вечером: 62 человека развёрнуты, 69 связей, деньги не тронуты (счётчики до/после), 7 контрольных проверок зелёные; проверено живым запросом к базе и карточке
5Связь человек↔компания: должность, право «заказывать за салон»✅ готовоЖивьём на базе: карточка Acnova Oy показывает людей плитками с должностями (Daniel — Toimitusjohtaja, метка «Основная»); диалог «+ Связь» с типами и историей влит (#196)
6На заказе: кто должник и кто действовал; «лично / от салона»✅ готовоЗакрыто 21.07 (core#194+st#294): на карточке заказа бейдж «лично / от салона» — правило от графа связей (юрлицо → салон; физлицо со связью сотрудник/владелец/контактное-лицо → «от салона …, действовал …»; без связи → «лично»; гость → честно без бейджа). Проверено живым API: заказ №186 → «лично»; 33 теста на правило. Цена (−5%) решена ранее
7Раздельные условия оплаты и налоги по фирмам✅ готовоС ночи 20.07 фискальная позиция видна прямо на карточке контакта (#124+#212; поле живое в API — ночная проверка)
8Каналы э-счетов + журнал проверки VAT-номеров✅ готовоЗакрыт живым взглядом 21.07: экран «Каналы э-счетов» в хабе Бухгалтерии — финский Finvoice и эстонский Peppol раздельно, журнал VIES-проверок (657 проверок: 463 валидных / 194 невалидных, живая лента); Peppol-статусы честно подписаны снимком миграции. Оговорка на проверку: у Finvoice 0 настроенных каналов — выяснить, пустые ли это dev-данные
9Несколько точек доставки; заказ ссылается на конкретный адрес✅ готовоЗакрыто 21.07 (core#194+st#294): ссылка отправление→адрес партнёра доведена до карточек заказа и отправления (метка адреса; при ручном вводе — честная надпись «Адрес введён вручную», не молчание); редактирование адресов и «сделать основным» были влиты ранее (#124+#212). Поля проверены живым API
10Связи между контактами: коллектор-за, преемник, франшиза✅ готовоЗакрыто 21.07 (core#199+st#299): в живом справочнике 10 типов связей — добавлены «Взыскивает за» (collector_for) и «Франшиза» (franchise), «Преемник» (successor) был с 0061; проверено живым API после деплоя; связь заводится с карточки («+ Связь», форма data-driven). Граф живой (69 связей), наполнение типов — по реальным случаям работы
11Рег.номер и VAT неизменяемы; новое юрлицо = карточка + связь «преемник»✅ готовоЗакрыто целиком утром 21.07: ядро #148 (запрет правки с журналом, операция «Преемник» — новая карточка + связь, деньги на старой) + витрина #257; живая проверка на карточке Acnova Oy: диалог реквизитов пишет «Заполненное значение неизменяемо. Для смены реквизитов используйте „Создать преемника“», правка — только «Исправить опечатку (только владелец)»
12Вместо удаления — обезличивание (защита данных)✅ готовоЗакрыт живой приёмкой 21.07 на одноразовом тест-контакте: красная зона требует точного имени (неточное/другой регистр — кнопка не активна), после — бейдж «Обезличено», персональные поля пусты и остаются пустыми после перезагрузки, контакт не ищется по старому имени; право только у владельца — у редактора пункта нет, а прямой запрос в обход экрана сервер отклоняет (403); повторное обезличивание — безопасный no-op; деньги и документы не затрагиваются (тестами ядра); мобильные экраны и все 7 языков проверены
13Внешние личности (магазин, Telegram, чаты) привязаны к карточке✅ готовоЗакрыто 21.07 (core#209+st#307), после того как адверсариальная приёмка честно вскрыла прежний оверклейм: блок «Заказы» работал, но магазин-личность не отображалась. Теперь: авто-связка Saleor-аккаунт↔партнёр создаётся при чекауте залогиненного покупателя (не гостя — ТЗ §349), блок «Личности магазина» на карточке контакта, бэкфилл существующих (daniel-client@ → партнёр 1248 подтверждён живьём); «1472» честно показаны отдельно как перенос из Odoo. Чат-личности (Telegram/WhatsApp) — с каналами после переезда, как в ТЗ
14Импорт адресов из старой системы, документы перепривязаны✅ готово
15На платеже своё поле плательщика («платит третий»)✅ готовоПостроен и влит 21.07: поле «Плательщик (платит третий)» на строке банковской выписки (выбор из справочника, бейдж в карточке и списке), строго справочное — привязки и суммы не двигает, банк остаётся источником истины; вечерний смоук увидел поле живьём на dev
16Роли тегами: контакт может быть и клиентом, и поставщиком✅ готовоС ночи 20.07 теги видны и назначаются прямо с карточки (#124+#212); живьём: у салонов теги вроде «Косметолог» (ночная проверка API)
17Правила заведения контактов и слияние дублей✅ готовоЗакрыто 21.07: экран «Дубли» живой, механизм слияния штатный (документы/связи/реквизиты переезжают, счётчики сверены до/после); правило Daniel «очевидные сливает дирижёр, спорные — я»: 3 очевидные пары слиты с бэкапами, 28 спорных ждут его кликов на приёмке (среди них разные юрлица с разными VAT — их правильно решать глазами)
18Сегменты: Все · Поставщики · PRO · B2B · Оптовые✅ готовоЗакрыто 21.07: все пять сегментов живые, счётчики с живого API после деплоя — Все 1314 · Поставщики 231 · PRO 201 · B2B 788 (критерий дословно по ТЗ: частное лицо без Y-tunnus, проф-цены скрыты) · Оптовые 26 (тег «Опт»); вкладки в кабинете с i18n на 7 языках
19Несколько адресов доставки видны в карточке✅ готово
20Проф-цены — только после ручного одобрения заявки✅ готовоЗакрыто живьём 21.07: тумблер «видит проф-цены» с подтверждением + весь путь «заявка → тикет + задача Ирине» прогнан на живом dev (тикет T-ACNOVA-000100, задача с исполнителем Ирина, одна транзакция, повторная заявка дедуплицируется); QA-артефакты убраны
21«Клиенты» в продажах — срез справочника, не копия✅ готовоПодтверждено QA-чипом (код + живой тест PRO-флага с откатом; лид ≠ клиент, копий не плодится) и живьём 21.07: чип «Клиенты 236» ведёт на те же карточки справочника — срез, не копия
22Тонкая модель продаж: ~6 таблиц✅ готово
23Канбан-воронка сделок по эталону✅ готово
24Письмо-лид из разбора почты попадает в воронку✅ готово
25Ханна и агенты работают с той же базой напрямую🟡 частичноОкно переезда: приём почты готов и оттестирован, живой ящик — в окно
26Свой тонкий кабинет продаж, без сторонней системы✅ готово
3. Задачи + Календарь (3.4–3.5)✅ 10❌ 5
ПунктСтатусПочему / комментарий
1Единый задачник на всю систему; «Дела» — его личный вид✅ готово
2Все поля задачи: исполнители, срок, приоритет, чек-лист, обсуждение, вложения…✅ готовоЗакрыто ночью 20.07 (#119+#207): метки и повтор задачи влиты, удаление пункта чек-листа тоже; ночная проверка — поля меток и повтора живые в API на реальных задачах
3Звонок/письмо/встреча — подтип задачи✅ готово
4Экраны: мне поставили · мои · поставленные мной · доска · календарь✅ готово
5Кнопка «Поставить задачу» на любой записи✅ готовоЗакрыто ночью 20.07 (#119+#207): кнопка добавлена на заказ, тикет и счёт (живой QA потока); на сделке и партии была раньше
6Вся команда видит все задачи; личные — опция✅ готово
7Сознательно без спринтов, Ганта и учёта времени✅ готово
8Календарь собирает дела из всех модулей✅ готово
9Виды месяц/неделя/день + фильтры✅ готово
10Личная календарная подписка (Apple Calendar, чтение)✅ готово
11Двусторонняя синхронизация с iCloud❌ нетОтложено ТЗ: ТЗ прямо относит на после переезда
12Календарные приглашения клиентам❌ нетОтложено ТЗ: часть интеграции с Apple за пределами первого этапа
13Расписание обучений и запись через сайт❌ нетОтложено ТЗ: «обучения на сайте» прямо перечислены в отложенной части ТЗ (§7)
14Письма участникам: подтверждение, детали, отмена участия❌ нетОтложено ТЗ: завязано на модуль рассылок
15Платные мероприятия через корзину❌ нетОтложено ТЗ — берём после текущей партии
4. Входящие, тикеты, Ханна + Товары (3.6–3.7)✅ 16🟡 13❌ 10
ПунктСтатусПочему / комментарий
3.6 Входящие, тикеты, Ханна
1Один ящик mail@ + все адреса компании в одну ленту✅ готовоДоказано живьём 21.07 (core#208): мост подключён к РЕАЛЬНОМУ ящику mail@acnova.eu (2270 писем; ящик после прогонов байт-в-байт нетронут) в режиме «вслед за Odoo» — Odoo читает непрочитанные, мы прочитанные, гонки нет по построению (решение Daniel); повторный прогон = 0 новых (идемпотентность на реальном ядре). kuitit@ вычеркнут — ящик один. В окно — только переключение ролей (выключить fetchmail, включить обычный режим моста)
2ИИ-разбор входящей почты, ничего не теряется✅ готовоДоказано живьём 21.07: реальные письма из настоящего ящика прошли триаж (уведомления Google → корректно спам-маршрут без тикета), запись в журнале обработки, повтор не плодит дублей; письмо-вопрос → тикет с ответственным проверено отдельно (п.3). Письма без явного адреса компании честно остаются на ручной разбор (не угадываем фирму) — правило catch-all для окна на решении Daniel
3Метка маршрута и ответственный на каждом письме✅ готовоЗакрыто живьём 21.07 (core#197+st#297): письмо-вопрос через штатный приёмник → тикет с меткой маршрута И ответственным (настройки «дежурный по тикетам» / «бухгалтер», выставлены на Ирину); повторная доставка того же письма дубль не плодит; неверная подпись → 401
4Ответ клиенту на языке его письма✅ готово
5Финансовая почта (чеки, счета) — в отдельный контур✅ готовоКонтур влит (#164) и доказан живым письмом 21.07: структурированный счёт с общего ящика классифицирован и ушёл в изолированную бухгалтерскую очередь БЕЗ публичного тикета; обычное письмо — штатно в тикеты; платный внешний ИИ физически недостижим (ключ не задан), чат-Ханна структурно не вызывается; при низкой уверенности классификатора — безопасный откат «человеку на разбор» (письмо-«проза» так и ушло — задокументированная деградация, порог 0.6 — продуктовый вопрос)
6Личная почта Daniel изолирована❌ нетВ очереди: станет актуально с подключением живой почты
7Спам — в мусор✅ готовоЗаработало 19.07
8Обсуждение на каждой карточке: история, подписчики, вложения, упоминания✅ готовоДоведено 19.07
9Один компонент: внутренняя заметка или письмо клиенту✅ готово
10Живые обновления экрана без перезагрузки✅ готовоЗакрыто 21.07 (st#301): обсуждения (SSE) + счётчики Дел + тикеты были; добавлены Задачи (4 вкладки), CRM, Продажи, банковская очередь, Входящие — 60-сек опрос пока вкладка видима, ввод пользователя и пагинация не затираются (покрыто тестами). Пульт обновляет данные своим сборщиком /5 мин
11Ответ клиента письмом попадает в ту же ветку❌ нетОкно переезда: нужен живой ящик
12Беседы из чатов зеркалятся в обсуждения❌ нетОтложено ТЗ: каналы чатов после переезда
13Тикет: номер, статусы, приоритет, ответственный, сроки, привязки✅ готово
14Просрочка срока ответа краснеет и падает в «Дела»✅ готовоСчитается по хельсинкскому рабочему дню
15Тикет рождается сам; любую беседу — в тикет одной кнопкой✅ готово
16Очередь тикетов с фильтрами, видит вся команда✅ готово
17Раздел «Помощь» в портале клиента✅ готовоВ сводке 18.07 этот пункт был посчитан дважды — теперь один раз
18Логика тикетов в нашем ядре; чаты — только каналы🟡 частичноОтложено ТЗ: логика в ядре есть, каналы чатов после переезда
19Перенос 48 открытых тикетов из старой системы❌ нетВ очереди: разумнее перенести свежим срезом в окно переезда
20Заявка на проф-цены → тикет + задача Ирине/Анне✅ готовоЗакрыто живьём 21.07 (core#195+st#295): единый транзакционный эндпоинт (BFF-дубль логики выпилен), настройка ответственных — список (сейчас Ирина; «Анны» как учётки пока нет — добавится словом Daniel), живой прогон: задача родилась с исполнителем, дедуп повторной заявки работает
21Ханна готовит черновики ответов, отправляет человек✅ готовоВлито утром 21.07 (core#151+st#240) и проверено живьём: кнопка «Черновик от Ханны» на тикете заполнила композер ответа (бейдж «черновик ИИ»); отправляет всегда человек
22Ханна опирается на каталог и справку, не выдумывает✅ готовоПроверено живьём 21.07 дважды: QA-матрица (2.50 € точно; несуществующий товар — честное «нет»; условия доставки дословно; скидку не выпросить) + утренний вопрос про товар — ответ с ценой 4.14 € до цента, наличием и ссылкой за 26 секунд
23Женский род, честное «я — ИИ», 7 языков, подпись Hanna Virtanen✅ готово
24Если ИИ недоступен — честный ответ, не выдумка✅ готовоПроверено живьём 20.07: при недоступном ИИ разбор честно пишет «Продавец неизвестен…» и предлагает «Пере-разобрать», ничего не выдумывая — отказ безопасен
25Выбор моделей ИИ + кэш подсказок✅ готовоПроверено 20.07: экран настроек ИИ живой, выбор моделей и кэш совпадают с ТЗ дословно; промышленное подключение выберет Daniel после отладки
26Автопилот Ханны — не раньше Волны 2, только с контролем человека✅ готово
27Полный омниканал: WhatsApp, Telegram, Instagram, виджет❌ нетОтложено ТЗ: само ТЗ относит на после переезда
3.7 Товары (каталог делает отдельная программа)
28Каталог ведёт отдельная программа; магазин — читаемая копия🟡 частичноКопия живёт и наполняется; сама программа ещё не подключена
29Синхронизация: артикул — ключ, без дублей, корректное удаление✅ готовоПроверено живьём 21.07: артикул уникален (1207/1207, ни одного пустого), повторный импорт = без изменений; удаление = «надгробие»: исчезнувший из источника товар снимается с публикации в обоих каналах с меткой (не стирается), возврат в источник снимает метку; на живых данных 325 надгробий и НОЛЬ из них опубликовано — инвариант держится
30Ядро и витрина каталог только читают✅ готовоЗакрыто 20.07 (#200): инвариант «только чтение» превращён в вечную CI-защёлку — скан всех записей в каталог гоняется каждым прогоном; в ядре обращений на запись нет вовсе
31Требования к карточке — спецификация для программы каталога❌ нетЗона программы каталога: организационная передача спецификации отдельной программе, вне технической проверки
32Блок «Документы»: сертификат, протокол, этикетка❌ нетЗона программы каталога
33Блок «Закупка»: поставщик + цена от объёма❌ нетЗона программы каталога
34Варианты отдельными строками со своими ценами🟡 частичноПродажа вариантов работает; закупочные цены — зона программы каталога
35Опции вариантов: размер, цвет, объём, вес🟡 частичноСвойства уже синхронизируются и работают фильтрами; редактор — зона программы каталога
36Единицы измерения: штуки, метры, килограммы❌ нетЗона программы каталога
37Описания на 7 языках + SEO заполняет ИИ🟡 частичноПереводы едут, витрина 7-язычная; редактирование — зона программы каталога
38Вкладки для косметики: активные компоненты, состав, применение❌ нетЗона программы каталога
39Обязательное поле «Вес товара» (этикетки доставки)🟡 частичноВес приезжает; обязательность поля — зона программы каталога
5. Торговля, склад, закупки + Производство (3.8–3.9)✅ 41🟡 8❌ 1
ПунктСтатусПочему / комментарий
3.8 Продажи · Закупки · Склад · Цены
1Первый экран «Поток»: едет к нам → лежит → едет от нас✅ готовоВлито ночью (core#126+st#215) и проверено живьём в пересчёте STATUS-RECOUNT-2 (~01:21): экран /cabinet/trade-stream — три колонки «Едет к нам» (81 позиция, 125082.42 €) / «Лежит» (865, дефицитов 0) / «Едет от нас» (5, 59.44 €) с реальными данными под владельцем
2Настройка колонок и поиск по заказам✅ готовоВлито ночью (core#141+st#229) и проверено живьём утром 21.07: поиск уходит на сервер (?q=…) и фильтрует по имени/номеру/email, настройка 8 колонок с сохранением
3Продажи: полный набор колонок, вкл. «без НДС / НДС»✅ готовоЗакрыт целиком ночью 20.07 (#120+#208, раньше плана): новые заказы хранят разбивку «без НДС / НДС» по строкам, сервер сверяет её до цента; историческим — из переноса; заказам до деплоя — честная сноска. Ночная проверка: поля НДС отдаются в строках заказа через API
4Внутри заказа: маржа, цены с/без НДС, скидка🟡 частичноНДС-разбивка внутри нового заказа влита ночью 20.07 (#120+#208); маржа и скидка — расчётный контур, по плану не первый этап
5Закупки: заказы поставщикам, приёмки, рекламации✅ готово
6Закупки: полный набор колонок✅ готовоВлито ночью (core#147+st#236) и проверено живьём утром 21.07: разбивка «Без НДС / НДС» по строкам и честный статус оплаты (Оплачен / Частично / Нет счёта) агрегатом по поставщику
7Кнопки «Дозаказать у поставщика» и «Рекламация»✅ готовоЗакрыт целиком утром 21.07: «Дозаказать» живая на карточке склада (ведёт в пополнение), «Рекламация» влита следом (core#173+st#267) — живая проверка: кнопка на карточке заказа поставщику P00161 на месте
8Письмо поставщику: черновик готовит система, отправляет человек✅ готовоЗакрыто 21.07: сервис кнопки прогнан живьём на реальных поставщиках — текст собирается на языке поставщика (fi/et/de, без карточки — en), подпись нейтральная без лишних деталей, НИЧЕГО не отправляется (проверено: ни письма, ни записи). Клик на живом черновике покажет то же — сейчас «пополнять нечего», черновиков нет
9Склад: стартовый экран с остатками✅ готово
10Приход/расход в два клика; история движений с автором✅ готовоВлито ночью (core#152+st#241) и проверено живьём утром 21.07: на карточке позиции кнопки Приход / Расход / Инвентаризация, формы в два клика (количество + примечание); при фирме «Обе» кнопки честно скрыты — движение пишется только от конкретной фирмы; история движений с автором влита раньше (#111+#187)
11Несколько складов: основной + салоны, перемещения✅ готово
12Инвентаризация как движение «корректировка», не правка числа✅ готовоПроверено живьём утром 21.07: диалог «Инвентаризация» принимает фактический остаток и сам считает разницу — записывается движение-корректировка с обязательной причиной, само число не правится (core#152+st#241)
13Варианты строками; группировка; сигнал «пора заказать»✅ готовоВлито 20.07 (#111+#187): агрегаты по складам, сводка дефицитов, сигнал «пора заказать»; сверка живьём 1-в-1
14Задел под склад маркетплейсов и товар на реализации✅ готовоПринято живьём 21.07: мультисклад реальный — в остатках три склада (main 785 позиций + 2 салона), задел под marketplace/consignment заложен в коде склада; полноценный учёт чужого товара (consignment-владение) — сознательно Волна 2, как и в ТЗ
15Сроки годности по партиям, уведомления за 6 и 3 месяца✅ готовоВлито утром 21.07 (core#156+st#246) и проверено живьём: в списке партий — колонка «Срок годности» с бейджами «истекает/просрочено», на Пульте — новый домен «Склад» (партии к истечению), пороги 180/90 дней настраиваются (группа «Торговля и склад»); партия в горизонте падает в «Дела», просроченная — делом «списать товар»; для косметики завершение партии без срока годности блокируется сервером наглухо
16Резерв: заказ бронирует товар; продать больше остатка нельзя✅ готовоЖивой конкурентный тест 19.07 + уборка брошенных резервов
17Мобильная приёмка/сборка со сканером штрихкодов✅ готовоВлито ночью (core#127+st#216) и проверено живьём в пересчёте STATUS-RECOUNT-2 (~01:21): экран /cabinet/barcode-scan — приход/расход, поле сканера, камера; на мобильном 390px рендерится корректно; живой скан кода вызвал реальный API (200), код не распознан → честно предложена одноразовая привязка «код ↔ товар» (alias)
18Автопополнение: «что заказать сегодня» + черновики заказов✅ готовоВлито утром 21.07 (core#149+st#238) и проверено живьём: вкладка «Пополнение» в Закупках — горизонт 14 дней, честное «Пополнять нечего — все остатки в порядке» (дефицитов сейчас 0), блок собранных черновиков заказов; «Дозаказать» с карточки склада ведёт сюда же
19Статус оплаты сквозной во всех модулях✅ готовоПоследний пробел закрыт ночью (core#147+st#236): статус оплаты виден и в закупках — живая проверка 21.07 (Оплачен / Частично / Нет счёта)
20Оплата меняется загрузкой банковской выписки🟡 частичноМеханика готова и укреплена ночным аудитом: авто-матч влит, массовый прогон фоном с прогрессом, двойной запуск отбит гонкой; критичный денежный дефект пойман и ЗАКРЫТ (core#210) — частичный платёж больше не затирается (счёт 746 остаток 10,17 живьём, не 16,67), на общем клиентском viite уверенность честно ≤0,7 без авто-привязки. Осталась сама разборка ~2,5 тыс. накопленных строк — операционная работа бухгалтера, не код
21Просроченное подсвечивается и падает в «Дела»✅ готовоПринято живьём 21.07 (15:54): в «Делах» 8 карточек просрочки с суммой, днями и уровнем взыскания 1/2/3/коллектор (источник dunning_overdue, бизнес-дата Хельсинки); карточки вычисляемые — дубли невозможны, закрываются сами при оплате. Письма-напоминания клиентам по-прежнему сознательно выключены до отдельного «да» Daniel
22Ценовая политика: клиент → группа → по умолчанию✅ готовоПересобрано и проверено 20.07
23Фикс-каталоги цен, перенос дословно✅ готовоСверено 21.07: все 7 фикс-каталогов, число позиций сходится с Odoo по каждому (135 / 422 / 3 / 357 / 452 / 458 / 581), 18 выборочных цен по 4 каталогам совпали до цента; живой резолвер подтверждает (пример: нетто 9.27 → 11.63 с НДС 25.5% = цена Odoo)
24Товар «только для профи» сервер не отдаёт чужим — не обойти✅ готово
25Переключатель цен с/без НДС на витрине✅ готовоОтклонение закрыто ночью (st#231: переключатель только подтверждённым PRO + вычищена утечка net-режима гостю); живая проверка 21.07 — гость переключателя не видит
26Эстонский канал витрины (YDE)✅ готовоПроверено 20.07: эстонский канал активен, состав 1207 товаров совпадает с финским каналом
273173 старых ценовых правила → 3 политики + исключения✅ готовоЗакрыто 21.07: перенос структуры сверен полностью — фактически 10 политик + 7 фикс-каталогов + 26 исключений (оценка «~3» в ТЗ была прикидкой), все цены материализованы и дважды сверены в ноль до цента; редактор формул — Волна 2 решением Daniel
28Сверка цен «в ноль» со старой системой✅ готово0 расхождений до цента по 1397 товарам (19–20.07)
29Настраиваемые коэффициенты наценки❌ нетОтложено решением Daniel 21.07 на Волну 2 (после переезда): «сейчас главное, чтобы цены показывались как надо» — а они показываются: цены материализованы из Odoo и сверены в ноль до цента (дважды, вкл. состав всех 7 каталогов). Редактор формул наценки (как pricelist-правила Odoo) перенесём дословно во Вторую волну; до переезда цены не трогаем — сломает сверку. Муляжные поля из кабинета убраны (#162+#254)
30Кнопка «Сформировать прайс-лист» в PDF на бланке✅ готовоЭкран и кнопка проверены живьём (~01:21); в ~02:30 доставлен недостающий конфиг (адрес сервиса ценообразования через Coolify) и выкачен резолвер с новыми ручками — полная цепочка под владельцем проверена до реального PDF (111 КБ, группы «Розничный», «PROF Опт» и др.)
31Витрина: тёмная тема, бейджи, «с этим покупают»✅ готовоЗакрыт целиком утром 21.07 и проверен живьём: бейджи были раньше; тёмная тема витрины (st#262) — переключатель в футере магазина (Светлая/Тёмная/Системная) включён и выключен под живым браузером; блок «С этим покупают» (st#259 + мост исторических заказов core#169 + матрица co-purchase в резолвере цен #57) — на карточке SHOR Enzyme Activating Solution живая карточка пары SHOR Enzymatic Powder (осмысленная двухкомпонентная система), цены и наличие из живых обогатителей
32Отгрузка: обязательный вес + этикетка PostNord✅ готово
3.9 Производство — простой модуль
33Рецептуры: состав, выход, техкарта, общие для обеих фирм✅ готово
34Google-документ — инструкция, не источник расчётных цифр✅ готово
35Производственный заказ: множитель, номер, себестоимость, лоты сырья✅ готово
366 стадий: от подбора до прихода готовой партии✅ готово
37Для не-косметики контроль и партия необязательны✅ готовоПроверено 21.07 по коду производства (fail-closed): косметике QC (pH) и срок годности обязательны — сервер не даёт завершить партию без них; не-косметике контроль и партия необязательны (QC=не требуется, партия пустая допустима). Уточнение: инвариант живёт в Производстве/QC (§3.9), а не в бух-первичке
38Себестоимость по фактическому выходу, средневзвешенная✅ готово
39Прослеживаемость партий по европейскому регламенту✅ готово
40Номер партии присваивается только при успешном завершении✅ готово
41Срок годности и «после вскрытия» отдельно; этикетка партии✅ готовоВлито ночью 20.07 (#123+#211): этикетка партии — номер, даты производства и годности, «после вскрытия» (+PDF); ночная проверка: эндпоинт этикетки живой в API
42Электронная навеска: рецептура масштабируется под объём✅ готово
43Таблица навески с допусками и подписью оператора✅ готовоЗакрыто ночью 20.07 (#123+#211): время и оператор фиксируются на каждой строке навески, допуски держит сервер
44Вне допуска — красное; отклонение только с причиной✅ готовоДефект вечерней проверки закрыт ночью тем же днём (#123+#211): навеска вне допуска без причины отклоняется сервером наглухо, причина сохраняется на строке, повторный взвес в допуск её сбрасывает; покрыто тестами на реальной базе, поле причины живое в схеме API (ночная проверка)
45Чек-лист контроля качества → Годна / Брак✅ готовоВлито ночью 20.07 (#123+#211): чек-лист вид/запах/pH/однородность, «Годна» для косметики без всех проверок запрещена; поля контроля живые в API (ночная проверка)
46«Завершить»: заморозка листа, списание, приход с себестоимостью✅ готово
47Отчёт партии PDF с обязательным pH✅ готово
48Каталог не трогаем; флаг «своё производство» в ядре✅ готовоПроверено 20.07: флаг собственного производства в каталоге подтверждён (#123), а «каталог не трогаем» закреплено вечной CI-защёлкой (#200)
49Виджеты производства в «Делах»✅ готово
50Сознательно без сложного планирования производства✅ готово
6. Бухгалтерия + Магазин-витрина (3.10–3.11)✅ 23🟡 16
ПунктСтатусПочему / комментарий
3.10 Бухгалтерия
1Своя бухгалтерия: первичка, заказы и счета в ядре✅ готово
2Роль «бухгалтер»: видит только первичку своих фирм✅ готово
3Приём документов: почта kuitit@, папка сканера, ручная загрузка✅ готовоВсе три канала готовы и оттестированы (мост почты — 16 тестов); оригиналы перенесённой первички починены #116 и проверены живьём вечером 20.07 (файл отдаётся, у отсутствующих — честное «файла нет» вместо ошибки); живой ящик kuitit@ включается в окно переезда — как боевые ключи Stripe
4ИИ-разбор каждого входящего документа✅ готовоБыло ❌ 18.07 — заработало до цента, чеки разобраны. Вечером 20.07 перенос движка в новую платформу завершён (#110): счёт Telia сверен 1:1 до цента, «25 недопарсенных чеков» оказались не документами; боевой поток включается в окно переезда
5Структурные э-счета: разбор без ИИ, по правилам✅ готовоЗакрыт живыми проверками 21.07 в два звена: (1) тестовое Finvoice-письмо по настоящему почтовому пути разобрано продакшен-кодом — все суммы до цента, референс с валидной контрольной суммой, 3 строки 1:1, дальше черновика ничего не создаётся (проводок и платежей — ноль); (2) достроен и живьём проверен dev-мост почты: письмо на kuitit@ теперь САМО доезжает до канала первички (обычное письмо — по-прежнему в тикеты), повтор того же письма дубль не создаёт. Полный сквозной прогон одним письмом до черновика — при первом реальном счёте
6Автопроверки: суммы, VAT-номер, референс, дубли✅ готовоЗакрыто 21.07 (core#206): к сходимости сумм/НДС (без ИИ, до цента) добавлена контрольная сумма референса — финский и эстонский viitenumero (веса 7-3-1) и международный RF (ISO 11649, mod-97) валидируются с тестами на валидные/невалидные примеры; невалидный референс = флаг проверки, не блокировка
7Контур безопасности: ИИ предлагает — решает человек✅ готовоАудит AI-HUMAN-GATE-QA прошёл все 6 точек: ИИ-разбор создаёт только черновики (не проводки); банковские подсказки сами не привязывают (закреплено тестом); черновики Ханны не отправляются без человека; свип не проводит; массовые применения — только вручную из CLI; пробы без прав → 401. Живые пробы утром 21.07 сходятся
8Декларации подаёт только бухгалтер, ИИ — никогда✅ готово
9Чеки: фото, поля, привязка к карте и банку✅ готово132 из 147 привязаны к банку; защита от двойной привязки
10Чеки: три состояния учёта✅ готовоВсе 145 непривязанных разобраны поштучно
11Экран «Чего не хватает» с порогом 90%✅ готово
12Каждый пробел → задача в «Дела» + сторож на Пульте✅ готовоПодтверждено живьём 21.07: в «Делах» 156 карточек-пробелов первички (источник completeness) — связка «пробел → задача» работает; сторож первички на Пульте живой. Плюс живьём видны все источники «Дел»: просрочка 8, Qred 2, отгрузки 3, согласования 6, дубли 28, производство 1, сторожа Пульта 4
13Касса: наличные + месячный отчёт бухгалтеру✅ готово
14Исходящие счета: срок, оплачен/нет, отметки напоминаний✅ готовоДобито ночью и утром: PDF-бланк ×7 языков (#122+#210) с логотипом (#135+#146+#159), кнопки «Скачать PDF» / «Открыть бланк» на карточке счёта (st#235 — находка пересчёта-2 закрыта), отметки 1/2/3-го напоминания на карточке и в списках (#145+st#234); живая проверка 21.07: карточка счёта показывает кнопки и отметки, PDF отдан (45 КБ, с логотипом)
15Книжится сумма счёта, а не «к оплате»✅ готовоПроверено 20.07 по 10 живым счетам: книжится полная сумма счёта, «к оплате» — производная величина
16Банковская сверка: банк — истина, сопоставление по референсу✅ готовоДвижок подсказок влит 20.07 (#107+#50) и виден живьём: на странице банковской строки блок «Кандидаты» (проверено вечером под владельцем); разбор накопленных ~2,5 тыс. строк — отдельная работа в очереди (§3.8), кнопка массового прогона подсказок для него влита ночью (#122+#210)
17Особые правила: комиссии, выплаты, «платит третий»✅ готовоЗакрыто и прогнано живьём 22.07 (core#216+commerce#74). Движок классифицирует верно на 2583 реальных строках: 73 комиссии (Stripe/Revolut/банк-сборы) + 58 выплат Stripe — 0 ложных срабатываний, обе фирмы не смешаны, Revolut USD OUR-fee распознан отдельной строкой (счёт 1952). Особый кейс: раскладка выплаты по заказам считает до цента. Ночной прогон вскрыл и ЗАКРЫЛ 4 дефекта: (1) задвоение обмена Revolut на 695 USD в данных миграции — дубли убраны + защита в переносчике от повтора; (2) 80% подсказок были недостижимы через ручку — теперь фильтр hint_kind достаёт все 131; (3) массовый прогон не считал комиссии — добавлены счётчики; (4) паттерн huomautusmaksu. «Платит третий» закрыт ранее
18Правка банковского статуса без документа запрещена✅ готово
19Кредит Qred: карточка с балансом до цента и графиком✅ готовоЗакрыто 21.07 (core#196+st#296): вкладка «История» — единая хронология выписок и платежей с остатком нарастающим итогом + график. Живой API: 31 строка, последняя «платёж −500.00 → 5293.23» — сходится с балансом до цента; настоящий пробел был в данных (выписки без явного баланса) — построен честный расчёт из проведённых строк
20Qred: письмо → разбор → проводка без дублей🟡 частичноОкно переезда: разбор провёл 9 реальных выписок, ждёт живой почты
21Автосверка платежа Qred по референсу + сигнал при отклонении✅ готовоВлито 20.07 (#107+#50): платёж Qred 5293.23 сверяется по референсу автоматически
22Сигналы Qred в «Дела» (5 видов)✅ готово
23Виджет Qred: долг, следующий платёж, мини-график✅ готовоЗакрыто 21.07 (core#196+st#296): мини-график в виджете обзора получил реальные данные — живой API отдаёт спарклайн из 9 точек (по одной на выписку, последняя 5793.23 → после платежа баланс 5293.23); рендер покрыт тестами, тёмная тема и 7 языков — гварды зелёные
24Перенос истории Qred с контрольными суммами✅ готовоПострочный аудит утром 21.07: деньги сходятся до цента — остаток кредита 5293.23 и счёт комиссий 261.50, каждая из 9 выписок сверена по типам строк; детализация агрегирована осознанно (суммы равны, платёжные аллокации свёрнуты); 8 оригинальных PDF выписок перенесены из старой системы с проверкой контрольных сумм файлов. Открытый бизнес-вопрос вне переноса: «фантомный» платёж 50 € в октябрьской выписке Qred, которого нет в банке, — книги его правильно не признают, вопрос у Daniel
25Взыскание: три ступени напоминаний должникам✅ готовоДвижок трёх ступеней (FI и EE) влит 20.07 (#107+#50) и живой: группы должников со ступенями и передачей коллектору отдаются из базы (проверено вечером); боевые отправки писем включаются в окно переезда с живой почтой — как и боевые ключи Stripe
3.11 Магазин-витрина
26Магазин на новом стеке: корзина, оплата, 7 языков, SEO✅ готовоЗаказ гостем прошёл насквозь 19.07; +600 позиций
27За основу — нынешний вид acnova.eu🟡 частичноСтруктурное сравнение с боевым 21.07: шапка/футер/меню/команда/цены (сумма до цента)/PRO-гейт/крошки — 1:1. Найдены и УЖЕ ПОЧИНЕНЫ: формат цен запятая-по-фински + убран лишний «sis. ALV» (st#308), кнопка «Osta nyt», пагинация «…13», контакт-поле, таб-бар «Koti», новости в 2 колонки (st#310). Осталось решение Daniel по структуре корзины (промокод/Link vs самовывоз+согласие) — на приёмке; финальный попиксельный проход — после его правок
28Мега-меню + живой поиск: мгновенно, опечатки, фильтры✅ готовоДобит целиком утром 21.07 и перепроверен живьём в финальном пересчёте: мгновенные подсказки при наборе в шапке (st#263) — «nitri» открывает выпадашку с товарами и ценами (Nitriilikäsineet 9.41 €) и «Показать все результаты (6)»; опечатка kasipyhe → 4 товара на живом индексе (typo-пороги + финские синонимы + decompound, commerce#55); Cmd-K-палитра шлёт настоящий серверный запрос вместо мок-JSON (st#252); скорость поиска 49 мс, фильтры и мега-меню живые
29Поиск отдаёт артикулы; цены и остатки — из ядра✅ готовоПроверено живьём 21.07: индекс поиска цен и точных остатков НЕ содержит (только флаги наличия; в коде стоит гард запрещённых полей), выдача отдаёт артикулы/ссылки, цены обогащаются резолвером, остатки — складом ядра; PRO-цена гостю не утекает (у PRO-товара цена честно пустая)
30Каналы Финляндия/Эстония: свои НДС, валюта, нумерация✅ готовоЗакрыто 21.07 по решению Daniel «продаём пока только от финской фирмы»: оба канала построены правильно (FI Acnova НДС 25,5% / EE YDE НДС 24%), и FI-only ВКЛЮЧЁН тремя слоями с живым доказательством — EE-чекаут отбивается на источнике (канал неактивен), эстонский гость покупает через финский канал (проверка до цента: 10,97 + 2,80 НДС = 13,77), эстонский остаётся языком; откат однокомандный, 293 EE-позиции сохранены для отката (commerce#67)
31Оплата: боевой Stripe + ручные способы🟡 частичноОкно переезда: тестовый путь пройден целиком, боевые ключи в окно
32Доставка: PostNord + реально используемые способы✅ готовоЗакрыто и проверено живьём 21.07 (st#310+#304+commerce#70): чекаут отдаёт все 7 способов паритетно боевому с ценами (PostNord 7,97→10,00 · Parcel 12,05→15,12 · Home 13,05→16,38 · DPD 14→17,57 · самовывоз Helsinki/Tallinn/Tuusula 0), НДС 25,5%, стоимость идёт в итог; цену доставки пишет ТОЛЬКО ядро (клиенту не доверяет). Живая интеграция PostNord (креды/этикетки) — к окну; сейчас фикс-цены = паритет с боевым
33«Голая страница» исчезает: выкладка без простоя🟡 частичноОкно переезда: на стенде работает, финальное подтверждение в окно
34Все старые адреса переадресуются на новые✅ готовоПроверено 100%: 2319 из 2319
35Оптимизация под ИИ-ответы (GEO)✅ готовоЗакрыто 21.07: /llms.txt живой (200, настоящий обзор), разметка Schema.org полная (см. п.36), ИИ-боты (GPTBot/ClaudeBot/Perplexity и др.) открываются тумблером индексации в окно переезда одним движением — на dev всё правильно закрыто; глубокая контентная GEO-оптимизация — процесс после переезда
36Разметка для поисковиков: товар, организация, крошки, FAQ✅ готовоЗакрыто живой проверкой 21.07: полный JSON-LD карточки — Product/Offer с ценой, честным наличием по остатку, возвратами, сроками доставки, продавцом + Organization + крошки; у PRO-товара гостю цены в разметке НЕТ (проверено рекурсивно по всему графу)
37Скорость сайта — оценка «хорошо»✅ готово
38Языковые метки на 7 языков + карты сайта✅ готовоВлито 19–20.07, подтверждено живой проверкой
39Фид Google Merchant, поиск по картинке и голосу🟡 частичноФид живой и проверен скачиванием ночью 20→21.07: 188 позиций, PRO-товары полностью исключены, мёртвые поля ожили (#51+#52 после золотой проверки FEED-VERIFY); поиск по картинке и голосу не начаты — потому пункт целиком ещё не «готово»
7. Сайт-редактор + Новости и соцсети (3.12–3.13)✅ 13🟡 8❌ 10
ПунктСтатусПочему / комментарий
3.12 Свой редактор сайта
1Весь сайт правится из кабинета без кода✅ готовоЗакрыто 21.07 (st#293): сырые надписи статусов переведены (гвард i18n в CI не даст вернуться), 7 областей открываются в редакторе; подключение областей к рендеру витрины — чип SITE-AREAS-WIRE (fail-open: пока область не опубликована, вид прежний)
2Редактор свой, внутри ядра✅ готово
3Страницы — блочный холст: палитра, перестановка, с нуля✅ готовоПрогнан живой сквозной сценарий 21.07: создание страницы с нуля → палитра 17 типов блоков → добавление → перестановка → сохранение → публикация (конвейер 0082, run завёлся, снапшот версии) → витрина отдаёт ровно переставленный порядок блоков. Доведено до конца, доказано на живом dev
4Каждое из 12 меню — свой редактор✅ готовоСбой устранён, проверено на живом меню
5Области сайта: шапка, футер, объявление, реквизиты…✅ готовоЗакрыто живьём 21.07 (st#309): 7 областей в редакторе + витрина ИХ ПОТРЕБЛЯЕТ — полный круг публикации прогнан на живом dev (полоса-объявление: опубликована → появилась на трёх зонах с языковым фолбэком и ссылкой → выключена → пропала; БД возвращена байт-в-байт). Фейл-оупен: пока область не опубликована, вид прежний (сравнение с боевым не ломается)
6Библиотека из 44 типов блоков (~109 видов)🟡 частичноОтложено ТЗ: библиотека набирается по волнам, стартовый набор есть
7План добора блоков по волнам🟡 частичноОтложено ТЗ: добор сознательно после переезда
8Тексты блоков на 7 языках; доступность; без тяжёлых скриптов✅ готовоЗакрыто 21.07 (st#312): последний контраст-хвост (крошки+футер, уровень «serious») починен вариантом Б по выбору Daniel — все пары ≥4.5:1 WCAG AA в светлой и тёмной теме, замерено живьём в браузере. Ранее: 0 критичных нарушений доступности, JS-бандл 272 КБ, 0 сторонних скриптов, тексты 7 языков
9Без фейковых приёмов: «N купили», таймеры и пр.✅ готово
10Хранение: версии, переводы, медиа, переадресации, меню✅ готово
11Структура страницы одна на 7 языков, переводится текст✅ готово
12Конвейер публикации: черновик → публикация → прогрев → сверка✅ готовоВлит утром 21.07 (#158+#249) и подтверждён живым прогоном на реальной публикации (перевод адреса на странице производства): после редеплоя relay конвейер прошёл весь путь — публикация → прогрев всех 7 языков (каждый ответил 200) → сверка версии витрины «подтверждено»; проверено в финальном пересчёте живым запросом статуса конвейера под владельцем; статус-плашка в редакторе показывает этапы
13Предохранители публикации: SEO, юридические страницы✅ готовоВлиты утром 21.07 (core#168+st#258) и проверены живьём в финальном пересчёте: в Настройках — «Предохранитель SEO при публикации» (warn — дыры предупреждают; strict — публикация страницы с пустыми SEO-полями блокируется), проверка учитывает только языки с реальным контентом; юридические и корневые страницы блокируются в любом режиме (менять — только владелец, с переподтверждением при существенном изменении); в редакторе — жёлтая пометка SEO-дыр на статус-плашке
14Изменил оригинал — переводы сами помечаются «устарел»✅ готово
15Единые адреса; смена адреса — сразу переадресация✅ готово
16Старые адреса со старого сайта работают✅ готово2319 из 2319, 100% (проверено 19.07)
17Права: кто правит, кто публикует; юр. страницы — владелец✅ готовоЗакрыто 21.07 (#227+#293): гейты доступа разведены — редактор правит (CmsEditAccess), но публикует только владелец/команда (CmsPublishAccess), существенное изменение юр-страниц (privacy/terms/imprint) — только владелец; покрыто тестами (editor publish→403, team юр-публикация→403, owner→200); живьём team создал и опубликовал обычную страницу
18Одновременная правка: метка «кто правит» + защита от затирания✅ готовоВлито ночью 20.07 (#118+#204): черновик блокируется с автопродлением, второй редактор видит баннер «редактирует…», версия черновика защищает от затирания; ночная проверка: механизм блокировки живой в API
19Редактор не трогает каталог и служебные зоны✅ готово
3.13 Новости и соцсети — отложено ТЗ на после переезда; берём в работу после текущей партии
20Единый композер новости: сразу на сайт и в соцсети❌ нетОтложено ТЗ — берём после текущей партии
21Адаптация поста под каждую сеть❌ нетОтложено ТЗ — берём после текущей партии
22Расписание публикаций, доска статусов❌ нетОтложено ТЗ — берём после текущей партии
23Публикация через собственный планировщик❌ нетОтложено ТЗ — берём после текущей партии
24Единый ящик комментариев всех сетей❌ нетОтложено ТЗ — берём после текущей партии
25Сети старта: Telegram, Facebook, Instagram, YouTube❌ нетОтложено ТЗ — берём после текущей партии
26Не берём: X, TikTok, Pinterest✅ готово
27Личные сообщения — в общих «Входящих»❌ нетОтложено ТЗ: каналы мессенджеров после переезда
28Наружу публикует только человек; у ИИ кнопки нет❌ нетОтложено ТЗ — берём после текущей партии
29Вставка товара в пост: фото, цена, ссылка из каталога❌ нетОтложено ТЗ — берём после текущей партии
30Опубликованные посты — источник соцстены сайта🟡 частичноОтложено ТЗ: стена на главной уже живая (12 постов); автоподача придёт с модулем
31Весь модуль «Новости и соцсети» — отложен на после переезда❌ нетСознательно не начат до переезда — так в ТЗ
8. Рассылки + Знания (3.14–3.15)✅ 11🟡 2❌ 13
ПунктСтатусПочему / комментарий
3.14 Рассылки — отложено ТЗ на после переезда; берём в работу после текущей партии
1Свой конструктор писем + свой сервер рассылок❌ нетОтложено ТЗ: движок на сервере стоит, конструктора и интерфейса нет
2Отправка только с отдельного поддомена новостей❌ нетОтложено ТЗ; почтовые записи ставятся в окно переезда
3Подписчики из единого справочника, сегменты❌ нетОтложено ТЗ — берём после текущей партии
4Подписка с двойным подтверждением + галочка при заказе✅ готовоСделано 19.07; журнал согласий (3206 записей) перенесён
5Письмо всегда на языке подписчика❌ нетОтложено ТЗ — берём после текущей партии
6Блочный конструктор, 7 языковых версий, утверждает человек❌ нетОтложено ТЗ — берём после текущей партии
7Кампании: разовые и автоматические серии❌ нетОтложено ТЗ — берём после текущей партии
8Не больше 2 писем на человека за 7 дней❌ нетОтложено ТЗ — берём после текущей партии
9Отписка в один клик + страница отписки без входа❌ нетЖдёт сам модуль рассылок (отложено ТЗ); центр согласий уже работает
10Рассылка — канал «Подписчики» в общем композере❌ нетОтложено ТЗ — берём после текущей партии
11Панель здоровья почтового домена с автостопом❌ нетОтложено ТЗ — берём после текущей партии
12Перенос подписчиков с согласиями + прогрев поддомена🟡 частичноОтложено ТЗ: история согласий уже перенесена; перенос и прогрев после переезда
13Согласия отдельно по каждой фирме❌ нетОтложено ТЗ — берём после текущей партии
14Весь модуль Рассылок — отложен на после переезда❌ нетТак задумано в ТЗ
3.15 Знания — решением Daniel 20.07 переведены из отложенного ТЗ в первую волну; вечером 20.07 каталог влит и живой (#109+#186)
15Внутренняя база знаний в Google Docs + каталог в кабинете✅ готовоКаталог влит и живой: раздел «Знания» в кабинете отдаёт все 50 реальных статей, синхронизированных с Google Drive (проверено вечером 20.07 живым запросом и открытием страницы под владельцем)
16Публичные «Знания» на сайте — своя подсистема✅ готовоПроверено живьём 20.07: статьи открываются
17Структура папок и каталог по постоянному номеру документа✅ готовоСинхронизация переносит и папки (50 документов + 16 папок), у каждого документа постоянный номер и адрес в каталоге
18Система пишет в Google только служебные метки❌ нетПодключение к Google пока сознательно «только чтение» — безопаснее; PR со служебными метками готов (core#167, по умолчанию выключено) и ждёт очереди вливания — не влито, потому честно ❌
19Просмотр в кабинете; правка кнопкой «Открыть в Google Docs»✅ готовоПроверено живьём 20.07: статья открывается в кабинете, у документа живая ссылка на оригинал в Google Docs; на странице прямо написано «правится в Google Docs, здесь только каталог и последний снимок»
20Привязка статьи к сделке, товару, процедуре✅ готовоВлито утром 21.07 (#160+#250) и проверено живьём полным кругом: на статье блок «Связано» (Сделка CRM / Тикет / Другое + поиск) — связь со сделкой создана, отобразилась и удалена; обратную витрину на карточке сделки добрать (заметка)
21Поиск по знаниям через общий быстрый поиск✅ готовоВлито ночью 20.07 (#205): статьи Знаний ищутся из общего быстрого поиска (вместе с банк-строками и закупками), модули открываются по имени на любом из 7 языков; каталог Знаний отдаёт статьи живьём (ночная проверка)
22Если Google недоступен — снимок только для чтения✅ готовоКабинет показывает сохранённый снимок статьи из своей базы, а не тянет Google при каждом открытии — при недоступном Google каталог продолжает читаться
23Доступ только внутри организации, без широких прав✅ готовоРаздел закрыт входом в кабинет (без входа — страница логина, проверено 20.07); подключение к Google — отдельным служебным ключом только на чтение
24Гигиена документов: ответственный, бейдж «устарел», снимки✅ готовоВлита целиком (ядро #175 + витрина #256) и принята живьём 21.07: панель «Снимки» с авто-версией и просмотром содержимого, назначение и снятие ответственного переживают перезагрузку; версия пишется только при реальном изменении текста, бейджи устаревания на каталоге были ранее (#186). Оговорка: источник «статья устарела» в «Делах» ждёт первых реальных данных — сейчас ни одна из 59 статей не помечена
25Перенос всех статей (222) со сверкой✅ готовоПересчёт 20.07: реальных статей 50 (остальные из 222 — служебные записи старой системы); все 50 на Drive и в живом каталоге кабинета — сверено по числу вечером 20.07
26Весь каталог Знаний в кабинете✅ готовоВлито и живо (#109+#186): 50 статей, 7 языков, папки, бейджи; первичная синхронизация с Drive прошла без ошибок
9. Пульт, Настройки, Портал, Интеграции (3.16–3.19)✅ 15🟡 15❌ 11
ПунктСтатусПочему / комментарий
3.16 Пульт (сторожа системы) — экран живой, проверен под владельцем 20.07; учёт 18.07 отставал от влитых PR #128/#129
3.16.1Общий светофор + «что не так» простыми словами✅ готовоПроверено живьём 20.07: светофор и строка «Есть проблемы, требующие внимания» на экране
3.16.2Карточки 7 областей с кнопкой «Исправить»✅ готовоПроверено живьём 20.07: 7 областей карточками, раскрытие, кнопки «Исправить»; у почты и соцсетей данные пока заготовки
3.16.3Сторож «Сайт и SEO»: индексация, позиции, скорость, битые ссылки✅ готовоЗакрыто живьём 21.07: щадящий обход dev-витрины отдельным таймером (первый прогон: 40 страниц, 0 битых ссылок) + TTFB по всем 7 языковым зонам с порогами (сборщик отправил снимки, ядро приняло); «позиции» в выдаче — только после подключения Search Console на боевом домене (окно), так и задумано
3.16.4Сторож «Переводы и контент»✅ готовоПринято живой QA 21.07: в развороте области — чипы по полю SEO 83,6% · Alt-тексты 59% · Контент 83,6% плюс разбивка по 6 языкам (240 языков-страниц), значения с живого API (#292); светлая/тёмная, десктоп/мобайл — без замечаний
3.16.5Сторож «Магазин и Merchant»✅ готовоЗакрыто 21.07 (core#198+st#298+commerce#68): область живая — фид Merchant (188 позиций, PRO исключены), манифест сборки, дата свежести; сборщик Пульта шлёт снимок фида каждые 5 минут (живой прогон: отправлено 9, принято 9)
3.16.6Сторож «Почта и рассылки»❌ нетОтложено ТЗ: реальных почтовых данных пока нет
3.16.7Сторож «Соцсети»❌ нетОтложено ТЗ: модуля соцсетей нет — сторожить нечего
3.16.8Сторож «Бухгалтерия»: несверенное, Qred, сроки НДС✅ готовоПринято живой QA 21.07: несверенные платежи теперь в области разрезом фирма·банк (ACNOVA·OP 1150 · ACNOVA·Revolut 676 · YDE·LHV 738 — точное совпадение с API, #292); Qred-сигналы, первичка и дедлайны KMD/ALV были живы ранее. Отдельный сигнал порога OSS сознательно отложен: при FI-only дистанционных продаж в ЕС нет — станет актуален с открытием EU-каналов
3.16.9Сторож «Серверы»: нагрузка, диски, сертификаты, бэкапы✅ готовоПолнота добита 21.07: к живому экрану (9 проверок, 20.07) добавлены свежесть почасовых дампов, здоровье 4 системных таймеров и запас диска dev-сервера — отдельный сборщик на dev-хосте тикает каждые 5 минут, ядро живьём приняло все 3 новых сигнала; бэкапы дополнительно подтверждены учением по восстановлению (обе базы «в ноль»)
3.16.10Критичное → задача в «Дела»; пороги; Telegram; история✅ готовоЗакрыт в два приёма 21.07: утренняя проверка с экрана — пороги меняются/сохраняются/возвращаются с историей изменений (живое срабатывание порога диска поймано на глазах), настройка Telegram-алертов сохраняется; недостающий экран истории СТАТУСОВ сигналов построен в тот же день (переходы «было→стало» пишутся только при смене, хранятся 90 дней, вкладка «История» на Пульте) и увиден живьём вечерним смоуком
3.16.11Минимум Пульта: индексация + переводы + сервер + бухгалтерия✅ готовоПроверено живьём 20.07: все 4 области видны владельцу на живом экране
3.17 Настройки — закрыты целиком ночью 20→21.07 (#213): все семь пунктов ✅
3.17.1Все параметры в одном модуле (175 настроек, 18 групп)✅ готовоПроверено живьём 20.07: экран Настроек — 18 групп, поиск, метки красной зоны и секретов (ночная перепроверка: группы отдаются под владельцем)
3.17.2У настройки: описание, «вернуть как было», история✅ готовоЗакрыто #213: живой тест «изменил 85 → 90 → откат по истории» — след чист, история и «вернуть как было» работают с экрана
3.17.3Секреты: маска, раскрытие по подтверждению, ротация✅ готовоЗакрыто #213: маска и раскрытие по подтверждению, ротация секрета влита; попутно починен гейт — кнопки «Раскрыть»/«Ротировать» видны только владельцу; механизмы живые в API (ночная проверка)
3.17.4«Красная зона» опасных настроек с подтверждением фразой✅ готовоЗакрыто #213: применение опасных настроек — только с подтверждением фразой (97 «красных» настроек размечены)
3.17.5Взаимозависимые настройки пакетом «черновик → применить»✅ готовоЗакрыто #213: атомарное пакетное применение с экрана, для красной зоны — с фразой-подтверждением
3.17.6Поиск настроек + выгрузка/загрузка конфигурации✅ готовоЗакрыто #213 (+#205): настройки находятся и из общего быстрого поиска; выгрузка (176 настроек) и загрузка с обязательным пробным прогоном — выгрузка проверена ночью живым запросом
3.17.7Список того, что сознательно не настраивается из кабинета✅ готовоЗакрыто #213: экран «сознательно не настраивается из кабинета» со всеми 7 пунктами из ТЗ
3.18 Портал клиента
3.18.1Портал — отдельное приложение, клиент видит только своё✅ готовоПодтверждено 19.07 гостевым заказом
3.18.2Повтор возможностей старого портала 1:1🟡 частичноЧЕСТНЫЙ ПЕРЕСЧЁТ 22.07 (прежняя формулировка «карты и часть остального» занижала долг — сверено с боевым Odoo поимённо). Воспроизведено: заказы (список/деталь/повтор/отмена/трекинг), тикеты с перепиской, профиль и адреса, смена пароля, саморегистрация и сброс пароля, согласие на рассылку, избранное и сравнение. Сверх старого — возвраты RMA в 3 шага (в Odoo их нет). НЕ воспроизведено (17 пунктов): котировки · оплата счёта/заказа онлайн · сохранённые карты · PDF заказа · счётчики на 7 из 8 плиток · обсуждение и «следить» на заказе · оценка тикета · второй вид согласия и история согласий · самообслуживаемый DSAR (сейчас заявка тикетом) · настоящий TOTP (сейчас код на почту — это НЕ TOTP) · passkey · соцвход Google/Facebook/Microsoft (кнопки-заглушки) · связанные аккаунты · привязка Telegram · история бонусов · деактивация аккаунта · раздел «Документы» показывает только PDF счетов. Сознательно отброшено (на боевом не используется): подписи (0 использований), подписки (модуля нет), таймшиты, проекты, RFQ поставщика. Не подтверждено живьём: счета и документы — код есть, но у тестового клиента 0 счетов, сквозного прогона не было.
3.18.3Сверх старого: трекинг, возвраты в 3 шага, отмена🟡 частичноВозвраты в 3 шага живые (#121+#209). Отмена — пересчёт STATUS-RECOUNT-2 (~01:21) лично прогнал мастер живьём: шаг 2 «Что вернуть и почему» → радиокнопка «Отмена заказа» реально работает; прямая кнопка на карточке заказа добавлена отдельно (st#226, чип PORTAL-CANCEL-VERIFY уже гонял её по 7 языкам и мобайлу) — эта часть пункта честно ✅. Трекинг посылки (core#129+st#219) смержен, но сегодня живым заказом с реальной отгрузкой не перепроверен — остаётся не до конца подтверждённым, поэтому пункт целиком пока держим 🟡
3.18.4Центр согласий: даты, версии, отзыв в один клик✅ готовоУкреплён 19.07: журнал согласий, согласия при заказе, настройки cookie
3.18.5Обращения из портала с пометкой + переписка на заказе✅ готовоЗакрыто 19.07: переписка на карточках полная
3.18.6«Всё связанное с нами — в одном месте»✅ готовоЗакрыто 21.07 (st#306): аудит портала живьём — заказы (магазин+исторические), возвраты RMA, счета, PDF-документы, адреса, согласия, профиль+2FA, тикеты, PRO-статус; доклеены недостающие плитки «Возвраты» и «Знания» — теперь всё достаётся с одного дашборда (8 плиток, 7 языков)
3.18.7Роли пользователей портала❌ нетОтложено ТЗ; каталог Знаний уже живой (20.07), сами роли — после переезда
3.18.8Портал внутри сайта; заказы из магазина, данные из ядра🟡 частичноОтложено ТЗ: разделение подтверждено; единый вход по плану после переезда
3.19 Интеграции
3.19.1Перенос всех интеграций; счётчики только с согласия🟡 частичноВ очереди: механика согласий готова, сами счётчики не подключены
3.19.2Facebook/Instagram: пиксель, переписка, Telegram-магазин❌ нетОтложено ТЗ: каналы переписки после переезда
3.19.3LinkedIn: публикации через планировщик❌ нетОтложено ТЗ: модуль соцсетей целиком после переезда
3.19.4YouTube: видео на витрине❌ нетОтложено ТЗ — берём после текущей партии
3.19.5Trustpilot: заказ выполнен → приглашение на отзыв🟡 частичноОкно переезда: включать на реальных боевых заказах
3.19.6Отзывы на самом сайте❌ нетВ очереди
3.19.7Счётчики Google, фид Merchant, защита форм от ботов✅ готовоЗакрыто 21.07: фид живой (188 позиций, PRO исключены); защита всех публичных форм влита (core#201+st#300: honeypot + time-trap + rate-limit, без сторонних скриптов, 3810 тестов); счётчики Google физически подключаются только на боевом домене — в окно, по механике согласий всё готово
3.19.8Stripe — ядро оплаты; PostNord — доставка✅ готовоТестовая оплата пройдена целиком 19.07; боевые ключи — в окно
3.19.9WooCommerce — в архив, не переносим✅ готово
3.19.10Amazon — сразу после портала❌ нетОтложено ТЗ: так расставлено в самом ТЗ
3.19.11Двойное подтверждение подписки → согласие + рассылки🟡 частичноОтложено ТЗ: цепочка сделана 19.07; модуль рассылок позже
3.19.12Вход через Google, Facebook, Microsoft, ключ входа❌ нетОтложено ТЗ: нерабочие кнопки честно скрыты, обманных заглушек нет
3.19.13Связка аккаунтов, страница «Подключённые аккаунты»❌ нетЖдёт входа через соцсети — укреплять пока нечего
3.19.14Гость без трения; «аккаунт в 1 клик» после заказа✅ готовоЗакрыт полным живым путём 21.07: гость → корзина → настоящая тестовая оплата → страница «Спасибо» с блоком «Аккаунт в 1 клик» и верным адресом → письмо → установка пароля → вход, оба заказа привязаны к новому аккаунту; повторный клик — честное «у вас уже есть аккаунт» без дубля; окна входа работают модалкой поверх сайта (проверено ранее). Перед боевым релизом — мобильный прогон именно этого блока (эмулятором)
3.19.15Единый вход во всём новом стеке🟡 частичноОтложено ТЗ: базовый вход работает, единый — после переезда