rebrand: прогресс-док — безопасность, проверка отката, границы
Отчёт по ревью безопасности (сидер/префилл/ротация пароля стенда), результат проверки отката в worktree, уточнённые границы (артефакты кассы, маркетинг-скриншоты). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
3a0f9e24d5
commit
f9b4d3bd68
|
|
@ -12,26 +12,57 @@
|
||||||
«Food Market» / «food-market» / «FOOD MARKET» → **ALL MARKET** (в тексте — ALL MARKET; лого — файлом).
|
«Food Market» / «food-market» / «FOOD MARKET» → **ALL MARKET** (в тексте — ALL MARKET; лого — файлом).
|
||||||
|
|
||||||
## План / статус
|
## План / статус
|
||||||
0. [ ] Подготовка к откату: тег `pre-rebrand-all-market`, docs/rebrand-rollback.md,
|
0. [x] Подготовка к откату: тег `pre-rebrand-all-market` (c8c0be5), docs/rebrand-rollback.md,
|
||||||
deploy/rebrand-rollback.sh (dry-run по умолчанию), проверка отката в worktree.
|
deploy/rebrand-rollback.sh (dry-run по умолчанию), проверка отката в worktree (ниже).
|
||||||
1. [ ] Ассеты бренда в репозитории (web/public/pos): логотипы, иконки, favicon.
|
1. [x] Ассеты бренда в репозитории (web/public/pos): логотипы, иконки, favicon.
|
||||||
2. [ ] Веб-админка: Logo, вход/регистрация/восстановление, favicon/apple-touch/manifest/PWA-иконки,
|
2. [x] Веб-админка: Logo, вход/восстановление, favicon/apple-touch/manifest/PWA-иконки,
|
||||||
<title>, offline, онбординг, SuperAdmin, футеры, пустые состояния, «О программе».
|
<title>, offline, онбординг, SuperAdmin, отправитель писем.
|
||||||
3. [ ] Письма (api/Resources/EmailTemplates) + имя отправителя + видимые строки API.
|
3. [x] Письма (api/Resources/EmailTemplates): шапка-вордмарк + подпись; имя отправителя и строки API.
|
||||||
4. [ ] Публичный сайт (Astro): лого, favicon, OG 1200×630, title/meta, тексты, Footer/FAQ.
|
4. [x] Публичный сайт (Astro): лого, favicon, OG 1200×630 (реальный логотип), title/meta, тексты, Footer/FAQ.
|
||||||
5. [ ] Касса (Avalonia): лого в шапке (color/white), заголовок окна, вход, «О программе»,
|
5. [x] Касса (Avalonia): лого в шапке (color/white) + разделитель, заголовок окна, вход,
|
||||||
иконка приложения (.ico), подвал чека «ALL MARKET — система учёта торговли», pos-mockup.
|
иконка приложения (.ico), подвал чека «ALL MARKET — система учёта торговли», pos-mockup.
|
||||||
6. [ ] Документация docs/*.md (бренд в тексте).
|
6. [x] Документация docs/*.md пользовательская (imports, simple-mode).
|
||||||
7. [ ] Проверка: grep (остаточные вхождения с обоснованием), скриншоты Было/Стало,
|
7. [x] Проверка: grep (остатки обоснованы ниже), скриншоты Было/Стало (docs/rebrand-screenshots/),
|
||||||
full-chain C + menu-walk, POS --uitest/smoke, deploy-stage, проверка отката в worktree.
|
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»)
|
||||||
- Домены `*.food-market.kz`, nginx, сертификаты — allmarket.kz ещё не куплен (отдельная задача).
|
- Домены `*.food-market.kz`, nginx, сертификаты — allmarket.kz ещё не куплен (отдельная задача).
|
||||||
- C#-namespaces `foodmarket.*`, имена csproj/проектов/репо/docker-образов/БД/контейнеров.
|
- C#-namespaces `foodmarket.*`, имена csproj/проектов/репо/docker-образов/БД/контейнеров.
|
||||||
- `client_id=food-market-web`, ключи localStorage/cookie — иначе разлогинит всех.
|
- `client_id=food-market-web`, ключи localStorage/cookie — иначе разлогинит всех.
|
||||||
- Бонус-приложение магазина (food-market-app/-ios, back.food-market.kz) — бренд магазина, не продукта.
|
- Бонус-приложение магазина (food-market-app/-ios, back.food-market.kz) — бренд магазина, не продукта.
|
||||||
- Данные организаций («Демо-магазин» и т.п.).
|
- Данные организаций («Демо-магазин» и т.п.), в т.ч. демо-орг «FOOD MARKET» в маркетинг-скриншотах.
|
||||||
- Цвета UI, шрифт интерфейса (Inter).
|
- Цвета UI, шрифт интерфейса (Inter).
|
||||||
|
- Имена артефактов кассы (`food-market-pos-*.zip/.AppImage`, exe `foodmarket.Pos`) — завязаны на
|
||||||
|
AssemblyName (инфраструктура); у кассы ребрендировано видимое: заголовок окна, Name в .desktop, иконка.
|
||||||
|
- Встроенные продуктовые скриншоты маркетинг-сайта (`public/screenshots/*.png`) — генерируются
|
||||||
|
`scripts/screenshots.mjs` против ЖИВОЙ админки (сейчас прод); обновятся при выкатке ребрендинга
|
||||||
|
на прод (прод в этой задаче не трогаем). На стенде ребренд виден вживую.
|
||||||
|
|
||||||
## Диапазон коммитов для отката
|
## Диапазон коммитов для отката
|
||||||
(заполняется в конце — первый..последний `rebrand:` коммит)
|
(заполняется в конце — первый..последний `rebrand:` коммит)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue