food-market/docs/rebrand-all-market-progress.md
nns 821f40634c
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
Docker API / Build + push API (push) Waiting to run
Docker API / Deploy API on stage (push) Blocked by required conditions
Docker Public / Build + push Public (test + latest) (push) Waiting to run
Docker Public / Deploy :test → test.food-market.kz (push) Blocked by required conditions
Docker Web / Build + push Web (push) Waiting to run
Docker Web / Deploy Web on stage (push) Blocked by required conditions
rebrand: прогресс-док — диапазон коммитов для отката + итог проверки
Диапазон pre-rebrand-all-market..HEAD (11 коммитов). Итог: grep чисто,
скриншоты Было/Стало, POS uitest/smoke OK, deploy-stage OK, menu-walk 3/3,
full-chain 16/16 ЗЕЛЁНЫЙ, откат проверен в worktree.

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

91 lines
8.9 KiB
Markdown
Raw 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.

# Ребрендинг Food Market → ALL MARKET — прогресс
Решение владельца 08.10.2026. Поменять **логотипы и отображаемое имя** продукта
(SaaS-система учёта) на **ALL MARKET**. Цвета UI и шрифт интерфейса (Inter) — НЕ менять.
Обязательна возможность быстрого отката.
Брендбук: `~/.fm-watchdog/brand/all-market/` (README + svg/pdf/png). Логотип «all market»
(ручка корзины над «all»), зелёный #0DB70D + графит #4C4F54, шрифт лого Onest (в кривых).
Охранное поле ≥ высоты «a», минимум 120 px по ширине на экране. Файлы НЕ перерисовывать.
## Отображаемое имя
«Food Market» / «food-market» / «FOOD MARKET» → **ALL MARKET** (в тексте — ALL MARKET; лого — файлом).
## План / статус
0. [x] Подготовка к откату: тег `pre-rebrand-all-market` (c8c0be5), docs/rebrand-rollback.md,
deploy/rebrand-rollback.sh (dry-run по умолчанию), проверка отката в worktree (ниже).
1. [x] Ассеты бренда в репозитории (web/public/pos): логотипы, иконки, favicon.
2. [x] Веб-админка: Logo, вход/восстановление, favicon/apple-touch/manifest/PWA-иконки,
<title>, offline, онбординг, SuperAdmin, отправитель писем.
3. [x] Письма (api/Resources/EmailTemplates): шапка-вордмарк + подпись; имя отправителя и строки API.
4. [x] Публичный сайт (Astro): лого, favicon, OG 1200×630 (реальный логотип), title/meta, тексты, Footer/FAQ.
5. [x] Касса (Avalonia): лого в шапке (color/white) + разделитель, заголовок окна, вход,
иконка приложения (.ico), подвал чека «ALL MARKET — система учёта торговли», pos-mockup.
6. [x] Документация docs/*.md пользовательская (imports, simple-mode).
7. [x] Проверка: grep (остатки обоснованы ниже), скриншоты Было/Стало (docs/rebrand-screenshots/),
POS --uitest/smoke OK (82 unit), deploy-stage, проверка отката в worktree (ниже).
full-chain C + menu-walk — против стенда после финального деплоя.
## Безопасность (ревью Mac-Claude) — закрыто
- **Пароль dev-админа утекал в UI.** `LoginPage` префилил e-mail/пароль SuperAdmin и
показывал подсказку «Dev admin: admin@food-market.local / Admin12345!» безусловно.
→ показывается только в `import.meta.env.DEV` на localhost; на стенде/проде поля пустые.
- **Сидер создавал SuperAdmin с известным паролем во ВСЕХ средах.** `DevDataSeeder`
(hosted service, без env-гейта) создавал `admin@food-market.local` с хардкодом
`Admin12345!` — т.е. и на Production. → пароль берётся ТОЛЬКО из секрета
(`Seed:SuperAdminPassword` / env `SEED_SUPERADMIN_PASSWORD`); дефолт — лишь в Development;
на прод/стенде без секрета аккаунт НЕ создаётся (warning). Проброшено в stage-compose.
- **Существующий пароль на стенде** (`Admin12345!`, давал /connect/token→200) сменён
вручную на сложный: POST /api/me/change-password. Новый пароль — в
`~/.fm-watchdog/stage-superadmin-password` (chmod 600). Проверено: старый→400,
новый→200, sentinel/master quick-login→200 (стендовый быстрый вход цел).
- **Другие хардкод-пароли:** `docs/DEVELOPER-GUIDE.md` и `docs/quick-login.md` —
внутренние dev/тест-доки (не пользовательские), оставлены; на прод quick-login выключен.
- **Зелёный UI не менялся:** `--color-brand #00B207` идентичен дорибрендинговому (git-diff пуст).
- **Тост 404 на входе:** StageBanner/QuickLoginBlock пробовали `/api/dev/quick-login/accounts`
через axios → глобальный тост «Не найдено» на проде. → raw fetch, тостов на входе нет.
## Проверка отката (worktree, стенд не трогали)
`git worktree` + `git revert pre-rebrand-all-market..HEAD` → применился чисто; собрались
API и web (0 ошибок); лого вернулось на Food Market (dist/logo.svg aria-label="Food Market",
<title>FOOD MARKET</title>, касса «FOOD MARKET · Касса»). Worktree удалён. Скрин —
`docs/rebrand-screenshots/rollback-logo-foodmarket.png`.
## Что НЕ трогаем (обоснование остаточных «food-market»)
- Домены `*.food-market.kz`, nginx, сертификаты — allmarket.kz ещё не куплен (отдельная задача).
- C#-namespaces `foodmarket.*`, имена csproj/проектов/репо/docker-образов/БД/контейнеров.
- `client_id=food-market-web`, ключи localStorage/cookie — иначе разлогинит всех.
- Бонус-приложение магазина (food-market-app/-ios, back.food-market.kz) — бренд магазина, не продукта.
- Данные организаций («Демо-магазин» и т.п.), в т.ч. демо-орг «FOOD MARKET» в маркетинг-скриншотах.
- Цвета UI, шрифт интерфейса (Inter).
- Имена артефактов кассы (`food-market-pos-*.zip/.AppImage`, exe `foodmarket.Pos`) — завязаны на
AssemblyName (инфраструктура); у кассы ребрендировано видимое: заголовок окна, Name в .desktop, иконка.
- Встроенные продуктовые скриншоты маркетинг-сайта (`public/screenshots/*.png`) — генерируются
`scripts/screenshots.mjs` против ЖИВОЙ админки (сейчас прод); обновятся при выкатке ребрендинга
на прод (прод в этой задаче не трогаем). На стенде ребренд виден вживую.
## Диапазон коммитов для отката
Все коммиты с префиксом `rebrand:` подряд поверх тега `pre-rebrand-all-market`:
**`pre-rebrand-all-market..HEAD`** = `ec7d2dc` … `af00f04` (11 коммитов, см.
`git log --oneline pre-rebrand-all-market..HEAD`). Откат: `deploy/rebrand-rollback.sh --apply`
(или `git revert --no-edit pre-rebrand-all-market..HEAD` + `~/deploy-stage.sh`).
## Итог проверки
- **grep:** видимых «Food Market/FOOD MARKET» в UI/письмах/сайте/кассе не осталось;
остатки — только обоснованные (домены, namespaces, client_id, демо-орг, артефакты, см. выше).
- **Скриншоты Было/Стало:** `docs/rebrand-screenshots/` + index.html (лого, favicon, письмо,
OG, касса вход/продажа, веб-вход, публичная главная; «Было» из тега, «Стало» live).
- **POS:** `--uitest` OK, `--smoke` OK (старт 157мс), 82 unit зелёные.
- **Стенд:** `~/deploy-stage.sh` → OK (test.admin.food-market.kz). Реальный вход: лого ALL MARKET,
без тостов, без префилла/подсказки пароля.
- **menu-walk:** 3/3 passed (demo-admin/keeper/cashier, каждый пункт меню, 0 ошибок/тостов).
- **full-chain C:** 16 ✓ / 0 ✗ — ЗЕЛЁНЫЙ.
- **Откат:** проверен в worktree (revert собрался, лого Food Market вернулось), стенд не трогали.
## Журнал
- 08.10 — старт: прочитан брендбук, составлен план, зафиксированы границы.
- 08.10 — ребрендинг web/api/public/pos/docs (коммиты ec7d2dc…89c5c6d); галерея Было/Стало.
- 08.10 — ревью Mac-Claude: безопасность входа (префилл/подсказка/сидер/ротация пароля стенда),
тост 404 (StageBanner/QuickLoginBlock → fetch), касса (лого крупнее + разделитель, бейдж внутри).
- 08.10 — deploy-stage OK; menu-walk 3/3; full-chain 16/16 ЗЕЛЁНЫЙ; откат проверен в worktree.