food-market/docs/site-fixes-2026-10-10/REPORT.md
nns ad747bf58c
Some checks are pending
Auto-tag / Create date-tag (push) Waiting to run
CI / Backend (.NET 8) (push) Waiting to run
CI / Web (React + Vite) (push) Waiting to run
CI / POS (WPF, Windows) (push) Waiting to run
docs(site): отчёт и скриншоты проверки исправлений test.food-market.kz (10/10)
docs/site-fixes-2026-10-10/{index.html,REPORT.md,screenshots}; tools/site-fixes-verify.mjs
(Playwright-проверка: signup plan/конфигурация/цена, мобильное меню, без промисов/REPLACE_ME).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 00:03:01 +05:00

76 lines
8.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Исправления публичного сайта test.food-market.kz — этап 1 «Сайт и выбор тарифа»
Дата: 2026-10-10/11. Источник: src/food-market.public (Astro). Деплой — только на ТЕСТ
(`~/.fm-watchdog/deploy-public-test.sh`). Откат: образ `food-market-public:test-pre-site-fixes`
(создан перед деплоем). Прод-сайт, gateway nginx, прод-БД — НЕ трогались.
Проверка после деплоя (Playwright, десктоп 1440×900@2x и моб. 390×844@3x): **10/10** —
см. `index.html` в этой папке (скриншоты + автопроверки).
## Что исправлено (по номерам 1–10)
1. **/signup читает `?plan=` и конфигурацию.** Форма на клиенте разбирает `plan`
(start|business|network; неизвестный → «Старт») и `shops/cashes/warehouses/employees`.
Выбранный тариф предвыбран; для «Бизнес» показывается конфигурация и итоговая цена.
Расчёт вынесен в общий модуль `src/lib/pricing.ts` (БД 10 000 + 2 000/магазин +
500/касса + 500/склад) — одни и те же числа в конструкторе, форме и на /pricing.
Проверено: `?plan=business&shops=3&cashes=4&warehouses=1&employees=5` → «Бизнес» выбран,
конфигурация и **15 500 ₸** видны; `?plan=start` → «Старт»; `?plan=xyz` → «Старт».
Параметры конфигурации уходят в тело запроса регистрации (вперёд-совместимо). **Текущий
контракт `/api/auth/signup` принимает только `plan` (SignupInput.Plan), остальные поля
игнорирует** — см. раздел «нужно решение владельца».
2. **Мобильная шапка (≤ lg).** Добавлены гамбургер + выезжающая панель со ВСЕМИ пунктами
десктоп-меню и кнопками «Войти»/«Начать бесплатно». `aria-expanded`/`aria-controls`,
закрытие по тапу вне и по Esc, доступно с клавиатуры; зоны нажатия ≥ 44 px. Проверено на
390 px: меню открывается, тап по «Тарифы» ведёт на /pricing, горизонтальной прокрутки нет.
3. **og/twitter-картинки** перегенерированы (`scripts/og.mjs` → `public/og/*`): из home убрано
«ОФД РК», в import «REST API» → «Excel, CSV, 1С, МойСклад», из for-grocery убран «ABC-анализ».
4. **База знаний и блог — убраны обещания несуществующего** (сверено с «В разработке» на главной
и /integrations/): способы оплаты подписки «Kaspi Pay/Halyk/Jusan/Forte/Visa/Mastercard»
→ «способ уточняется, свяжитесь с нами»; «стандартный REST API» в импорте → «Excel/CSV,
1С, МойСклад»; «Скачать установщик/.msi/Скачать кассу для Windows» → «скоро»; «тип оплаты
Наличные/Kaspi/Карта» → «наличные или карта»; «Kaspi Magazin (Q3 2026)» → без даты;
«архитектура для будущей маркировки» — убрано; «Триал» как тариф → «Старт/Бизнес/Сеть,
90 дней бесплатно»; платные консультации «5 000 тг/час» и скидки 3/6/12 мес — убраны
(нет на /pricing, не подтверждены). Ссылки на несуществующие /kb/users, /kb/loyalty убраны.
5. **/import**: чужой английский HR-скриншот (`/photos/import-hero.jpg`) заменён на реальный
скриншот каталога продукта (`/screenshots/catalog.webp`).
6. **Рендер /kb/***: тело статей было завёрнуто в ```` ```markdown ```` с дублирующим front-matter
и вторым `#`-заголовком → показывалось сырым моноширинным текстом. Развёрнуто: front-matter
не виден, markdown рендерится, заголовок один. Проверены все /kb/* и /blog/* (блог был чист).
7. **Аналитика**: убраны заглушки `data-id="REPLACE_ME"` (Google/Яндекс.Метрика) — скрипты
подключаются только при реальных `PUBLIC_GA_ID`/`PUBLIC_YM_ID`, иначе в HTML ничего нет.
8. **robots.txt**: `Sitemap:` → рабочий `/sitemap.xml` (был 404 `/sitemap-index.xml`).
9. **Противоречия сведены** к оферте (она главнее): удаление данных — 30 дней (было 30/60 в KB);
возврат — по письменному заявлению в случаях по закону РК (убрано «14 дней без обоснования»);
«Старт без лимита пользователей» → «до 2 сотрудников» (как на /pricing). Дубль в футере
«Дорожная карта»/«Changelog» (один URL) — убран, остался «Changelog». /status «Касса
(Windows) — в разработке» → «Скоро» (согласовано с «Скачать · скоро»).
10. **Мелочи**: зоны нажатия — ссылки футера `block py-2` (≈40 px), CTA в шапке `min-h-[44px]`;
у lazy-картинок (главная, /pos) проставлены `width`/`height` (catalog 1440×900, pos 1440×810)
против сдвига вёрстки.
## Что НЕ сделано / частично и почему
- **Зоны нажатия инлайновых ссылок** в предложениях (например «офертой»/«политикой» в форме,
отдельные «Подробнее →») не раздувал до 44 px — это текст внутри абзаца, увеличение ломает
поток; основные интерактивные элементы (меню, кнопки, ссылки футера) подняты до ≥ 40–44 px.
- **«Популярный» на /pricing у «Бизнес»** не добавлял (есть на главной) — косметическая
рассинхронизация, не влияет на факты.
- **Формулировка «до 10 сотрудников» (главная) vs минимум 5 в конструкторе** — оставлена
(«до 10» — верхняя граница, не ложь).
## Нужно решение владельца
- **Способы оплаты подписки** — реальные методы не определены в продукте; в KB поставил
«уточняется / по счёту — свяжитесь с нами». Нужно задать фактические способы.
- **Приём платежей конфигурации при регистрации** — сервер `/api/auth/signup` не принимает
shops/cashes/warehouses/employees. Нужно решение: расширять ли контракт, чтобы тариф/объём
фиксировались при регистрации (сейчас параметры показываются и уходят в запрос, но игнорируются).
- **Юридические документы /legal/* и контакты** — НЕ трогались (решение владельца): видны
плейсхолдеры «[НАЗВАНИЕ ТОО]», «[БИН]», телефон «+7 (___)», пометка «подлежит правовой
экспертизе». Из формы регистрации пользователь соглашается с офертой и политикой ПДн —
т.е. эти документы с плейсхолдерами ему предъявляются. Нужны реквизиты/экспертиза.
- **Налоги**: оферта 6.3 «с учётом всех налогов»; в FAQ оставлена фраза про счёт-фактуру «с НДС
или без» (режим налогообложения клиента) — формально не противоречит, но при желании свести.
- **Скидки за предоплату / платные консультации** — убраны как неподтверждённые; вернуть, если
такие условия реально есть.