food-market/docs/rebrand-all-market-progress.md
nns f9b4d3bd68 rebrand: прогресс-док — безопасность, проверка отката, границы
Отчёт по ревью безопасности (сидер/префилл/ротация пароля стенда), результат
проверки отката в worktree, уточнённые границы (артефакты кассы, маркетинг-скриншоты).

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

72 lines
6.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:` коммит)
## Журнал
- 08.10 — старт: прочитан брендбук, составлен план, зафиксированы границы.