feat: new Tehrani brand logo, custom button audience, trim dashboard

- Replace the crown logo with logo.svg / logo_bk.svg across both frontends;
  regenerate favicons and PWA icons via scripts/generate-brand-icons.cjs
- Custom button: admin chooses whether it shows before login or only after
- Dashboard: drop the survey-majority banner, hide the custom-order row

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mahmood
2026-11-14 16:53:25 +03:30
co-authored by Cursor
parent 0f6ad79ae7
commit de13445109
37 changed files with 428 additions and 105 deletions
+15 -7
View File
@@ -9,19 +9,27 @@
| نام فارسی، نام لاتین، عنوان تب مرورگر، آدرس سایت | [`brand.ts`](../brand.ts) در ریشهٔ پروژه | پنل ادمین، اپ مشتری و اپ مشتری v2 همه از همین یک فایل می‌خوانند: عنوان صفحه، نام نصب PWA، عنوان صفحهٔ ورود، پیام خوش‌آمد، متن‌های راهنما، لینک محصول. |
| نام برند در **همهٔ پیامک‌ها** | متغیر محیطی `BRAND_NAME` روی سرور API | خالی باشد = «تهران تاج» (پیش‌فرض در [`apps/api/src/common/brand.ts`](../apps/api/src/common/brand.ts)). بعد از تغییر فقط API را ری‌استارت کنید. |
| لینک سایت در پیامک خوش‌آمد | متغیر محیطی `BRAND_SITE_URL` روی سرور API | پیش‌فرض فعلاً `https://bnk.montzar.ir` است (دامنهٔ زنده). |
| لوگو | فایل‌های تصویر با نام ثابت `brand-*` (پایین) | نام فایل‌ها عمومی است؛ فقط خود تصویر را با همان نام جایگزین کنید. |
| لوگو | دو فایل SVG در ریشهٔ پروژه (پایین) | فقط همین دو فایل را عوض کنید و اسکریپت ساخت را اجرا کنید؛ بقیه از روی آن‌ها ساخته می‌شوند. |
### فایل‌های لوگو
- `apps/user-app-v2/public/img/brand-logo.png` و `.webp`
- `apps/user-app-v2/src/assets/img/brand-logo.png`
- `apps/admin-panel/src/assets/images/logo/brand-icon.png` و `.webp`، `brand-horizontal.png`
- آیکون‌های PWA و favicon: `apps/*/public/icon-192.png`، `icon-512.png`، `favicon.*`
- اسکریپت ساخت همهٔ این‌ها از یک تصویر: [`scripts/generate-brand-icons.py`](../scripts/generate-brand-icons.py) (مسیر تصویر ورودی را در خط اول آن عوض کنید)
منبع (ریشهٔ پروژه):
- `logo.svg` — نقش مشکی روی زمینهٔ شفاف؛ در صفحه‌ها، favicon و آیکون PWA
- `logo_bk.svg` — همان نقش روی کارت سفید؛ برای زمینه‌های تیره (پردهٔ تازه‌سازی اپ)
ساخت همهٔ خروجی‌ها: `node scripts/generate-brand-icons.cjs` ([`scripts/generate-brand-icons.cjs`](../scripts/generate-brand-icons.cjs)). خروجی‌ها:
- `apps/user-app-v2/public/img/brand-logo.svg`، `brand-logo-card.svg`، و نسخهٔ `brand-logo.png`/`.webp` برای لینک‌های مستقیم قدیمی
- `apps/user-app-v2/src/assets/img/brand-logo.svg`
- `apps/admin-panel/src/assets/images/logo/brand-logo.svg`
- آیکون‌های PWA و favicon: `apps/user-app-v2/public/icon-192.png`، `icon-512.png`، `apps/*/public/favicon.*`
نقش مشکی است؛ در حالت تیرهٔ اپ مشتری، کلاس `brand-mark` آن را روشن نشان می‌دهد (`style.less`).
### بعد از تغییر
1. `dist` هر سه فرانت و `apps/api/release` را دوباره بسازید (طبق روال انتشار).
1. `dist` هر دو فرانت و `apps/api/release` را دوباره بسازید (طبق روال انتشار).
2. اگر در دیتابیس فعلی برندی به نام قدیمی در «برندهای محصول» هست، از پنل ادمین ویرایشش کنید (seed فقط دیتابیس خالی را پر می‌کند).
## ۲. عمداً عوض نشده‌اند (نام داخلی، دیده نمی‌شوند)