feat: move brand name to one config and redesign the accounting card
اپ: نام برند در همهی صفحهها و پیامها یکسان شده و از یک تنظیم مرکزی خوانده میشود. اپ: کارت حسابداری در صفحهی مشتری بازطراحی شد؛ ماندهها و وضعیت لینک واضحتر نمایش داده میشوند. پنل: کارت حسابداری در پروندهی مشتری بازطراحی شد؛ ماندهها، آخرین ارسال و فرم لینک دستی واضحتر شدهاند. پنل: ستون «کد» در جدولها بهطور پیشفرض پنهان است و از انتخاب ستونها قابل نمایش است. پنل: تغییر نمایش ستونها در جدولها بلافاصله اعمال میشود. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 5.5
parent
5d2a1efb0c
commit
532ceee189
@@ -0,0 +1,67 @@
|
||||
# طرح: ستون ماندهی حسابداری در لیست مشتریان عمده
|
||||
|
||||
تاریخ: ۱۴۰۵/۰۷/۲۲ — وضعیت: **پیادهسازی شد** (۱۴۰۵/۰۷/۲۲) — تصمیمها: کلمهی بدهکار/بستانکار؛ ستونهای فعلی هنگام اتصال «بدهی داخل اپ» نام میگیرند؛ اپ کارشناس فروش بعداً
|
||||
|
||||
## مشکل
|
||||
|
||||
در لیست مشتریان عمده، ستونهای «بدهی گرمی» و «بدهی ریالی» بدهیِ **داخل اپ** را نشان میدهند
|
||||
(جمع سفارشهایی که در منتزر ثبت شده). مشتریهایی که از نرمافزار حسابداری آمدهاند هنوز در اپ
|
||||
سفارشی ندارند، پس این ستونها برایشان صفر است.
|
||||
|
||||
ماندهی واقعیِ حسابداری درست خوانده و ذخیره میشود (بررسی ۱۴۰۵/۰۷/۲۲: هر ۷۳۳ مشتری واردشده از زرین
|
||||
مانده دارند، ۳۸۴ نفر غیرصفر؛ مثلاً محمدرضا لطیفی کد ۹۶۱: ۷۲٫۲۸ گرم بدهکار) ولی فقط در صفحهی
|
||||
«مشاهده اطلاعات» هر مشتری دیده میشود، نه در لیست.
|
||||
|
||||
## راهحل: ستونهای پویا
|
||||
|
||||
| وضعیت اتصال حسابداری | چه نمایش داده میشود |
|
||||
|---|---|
|
||||
| به **زرین** وصل است | دو ستون «ماندهی زرین (گرم)» و «ماندهی زرین (ریال)» |
|
||||
| به **تهحساب** وصل است | دو ستون «ماندهی تهحساب (گرم)» و «ماندهی تهحساب (ریال)» |
|
||||
| به هیچکدام وصل نیست (یا اتصال خاموش است) | این دو ستون اصلاً نشان داده نمیشوند |
|
||||
|
||||
نام نرمافزار و وصلبودن از همانجایی خوانده میشود که دکمهی «سینک با زرین» بالای لیست میخواند
|
||||
(`admin/accounting-status`)، پس دکمه و ستونها همیشه با هم هماهنگاند.
|
||||
|
||||
ستونهای فعلی «بدهی گرمی / ریالی» (بدهی داخل اپ) **دست نمیخورند**، چون سقف اعتبار هنوز با آنها
|
||||
حساب میشود.
|
||||
|
||||
## نحوهی نمایش هر خانه
|
||||
|
||||
| حالت | نمایش |
|
||||
|---|---|
|
||||
| مشتری بدهکار است | عدد + «بدهکار» به رنگ قرمز — مثلاً `۷۲٫۲۸ بدهکار` |
|
||||
| مشتری طلبکار است | عدد + «بستانکار» به رنگ سبز — مثلاً `۱۶۷۳٫۹۳ بستانکار` |
|
||||
| مانده صفر است | `۰` |
|
||||
| مشتری به حسابی در نرمافزار وصل نیست | `—` |
|
||||
|
||||
با بردن موس روی عدد، زمان آخرین بهروزرسانی مانده نشان داده میشود (چون اگر «سینک مانده» خاموش
|
||||
باشد، عدد فقط با زدن دکمهی سینک تازه میشود).
|
||||
|
||||
## کجاها
|
||||
|
||||
هر پنج لیست مشتریان عمده (عمده، بنکداران، مغازهداران حضوری، تأییدنشده، بایگانی) چون همه یک جدول
|
||||
مشترک دارند. مرتبسازی (مشتریهای وصلنشده همیشه آخر) و فیلتر عددی روی ستونهای جدید کار میکند. (دکمهی چاپ جدول از قبل کاری انجام نمیدهد؛ ربطی به این طرح ندارد.)
|
||||
|
||||
## تغییرات فنی (خلاصه)
|
||||
|
||||
- **API** — `admin-customers.service.ts`: در خروجی هر ردیف سه فیلد `acc_remain`، `acc_rial_remain`،
|
||||
`acc_at` (از `accountingGoldBalance` / `accountingRialBalance` / `accountingBalanceAt`) و `acc_linked`؛
|
||||
و نگاشت مرتبسازی/فیلتر برای دو ستون اول. هیچ تغییری در دفتر حساب و محاسبهی بدهی اپ نیست.
|
||||
- **پنل** — `omdeListModel.ts` / `OmdeCustomerList.vue`: بعد از خواندن وضعیت اتصال، اگر وصل بود دو ستون
|
||||
با نام نرمافزار اضافه میشوند؛ اسلات نمایش بدهکار/بستانکار.
|
||||
- بدون migration و بدون تغییر در پایگاه داده.
|
||||
|
||||
## سؤالها از شما
|
||||
|
||||
1. **نمایش بدهکار/بستانکار:** پیشنهاد من همان جدول بالاست (عدد مثبت + کلمهی «بدهکار» قرمز یا
|
||||
«بستانکار» سبز). جایگزین: فقط عدد با علامت منفی برای طلبکار — کوتاهتر است ولی ۲۴۸ مشتری
|
||||
طلبکار طلا داریم و علامت منفی راحت اشتباه خوانده میشود. **پیشنهاد: کلمهی بدهکار/بستانکار.**
|
||||
2. **ستونهای فعلی «بدهی گرمی / ریالی» بمانند؟** وقتی حسابداری وصل است، این ستونها فقط بدهی
|
||||
سفارشهای داخل اپ را نشان میدهند و ممکن است گیجکننده باشند. سه راه:
|
||||
الف) بمانند کنار ستونهای جدید (کنترل سقف اعتبار هم دیده شود)؛
|
||||
ب) وقتی وصل است پنهان شوند و فقط ستون حسابداری بماند؛
|
||||
ج) بمانند ولی اسمشان «بدهی داخل اپ» شود.
|
||||
**پیشنهاد: ج** — چیزی پنهان نمیشود و اشتباه هم خوانده نمیشوند.
|
||||
3. **اپ کارشناس فروش** هم ستون «بدهی» دارد و همین مشکل را دارد. همین الان آن را هم درست کنیم یا
|
||||
بعداً؟ **پیشنهاد: بعداً، جدا** — این طرح فقط پنل مدیریت.
|
||||
@@ -345,7 +345,7 @@ schema جدید **یک مدل `Order`** دارد.
|
||||
### باگ/کوییرک legacy که وفادار پورت شد
|
||||
| # | مورد | محل | وضعیت |
|
||||
|---|---|---|---|
|
||||
| 14 | در `OmdeNonVerifiedList` هر دو شاخهی popconfirm مرحلهی یک `rejectStepOne` را صدا میزنند — یعنی از آن صفحه هرگز نمیشود تایید کرد | `OmdeNonVerifiedList.vue:64` | **عیناً پورت شد** پشت prop به نام `rejectOnlyStepOne` |
|
||||
| 14 | در `OmdeNonVerifiedList` هر دو شاخهی popconfirm مرحلهی یک `rejectStepOne` را صدا میزنند — یعنی از آن صفحه هرگز نمیشود تایید کرد | `OmdeNonVerifiedList.vue:64` | ابتدا عیناً پورت شد؛ **۱۴۰۵/۰۷/۲۲ (2026-10-14) رفع شد** — «تایید» حالا تایید میکند |
|
||||
| 15 | در منوی «حساب کاربری»، آیکون از `getStsIcon` (وضعیت سفارش) گرفته میشود ولی رنگش از `getActiveIcon` | `OmdeList.vue:124` | عیناً پورت شد |
|
||||
| 16 | `ReagentListModel` ستون `name` را دو بار اضافه میکند (یکی نمایان، یکی مخفی) | `ReagentListModel.js:10-11` | عیناً پورت شد |
|
||||
| 17 | tooltip «فعال سازی سفارش سفارش» (کلمه تکراری) | `ReagentList.vue:51` | عیناً پورت شد |
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# جابهجایی مشکی و زرشکی در اپ مشتری (user-app-v2)
|
||||
|
||||
**وضعیت:** تأیید شد و انجام شد (2026-10-14). زرشکی دقیق برند: `#7C0035`. خروج ← مشکی؛ کارتهای بزرگ (موجودی، دعوت، نوار نرخ) ← خودِ زرشکی برند `#7C0035` در هر دو حالت روشن و تیره (به درخواست صاحب کار، بهجای زرشکی تیره).
|
||||
**تاریخ:** ۱۴۰۵/۰۷/۲۲ (2026-10-14)
|
||||
|
||||
## هدف
|
||||
- رنگ اصلی اپ از **مشکی** به **زرشکی** تغییر کند و مشکی نقش فرعی داشته باشد.
|
||||
- مشکی کمتر دیده شود و زرشکی در اولویت باشد.
|
||||
- **ظاهر و ساختار صفحهها تغییر نمیکند**؛ فقط رنگ همان دکمهها و کارتهای فعلی عوض میشود.
|
||||
|
||||
## خارج از این کار (دست نمیخورد)
|
||||
- **رنگ متنها**: متنها همان مشکی/خاکستری فعلی میمانند. اگر متن زرشکی شود، خواندنش سخت میشود.
|
||||
- **سرمهای و برنزیِ باقیمانده از اپ قدیمی**: اینها شامل نوار وضعیت گوشی، نوار نرخ طلا، اسپینر، `SheetArt`، `ActingAsBar` و پنجرهٔ بهروزرسانی هستند و اگر خواستید، بعداً جداگانه انجام میشوند.
|
||||
- اپ قدیمی `user-app` و پنل مدیریت.
|
||||
|
||||
## وضعیت فعلی
|
||||
در این اپ، **«مشکیِ پُر»** (`@ink`) رنگ اصلی است و **زرشکی** (`@wine`) فقط برای تأکید، حالت فشرده، نشانها و دکمهٔ خروج استفاده میشود.
|
||||
|
||||
## تغییرات
|
||||
|
||||
### ۱) هر جا که پسزمینه مشکیِ پُر است ← زرشکی (متن روی آن سفید)
|
||||
اینها دکمههای اصلی، گزینههای انتخابشده و کلیدها هستند:
|
||||
|
||||
| بخش | فایل |
|
||||
|---|---|
|
||||
| دکمههای سبد خرید (۴ مورد) | `views/CartView.vue` |
|
||||
| دکمهٔ ورود | `views/user/LoginView.vue` |
|
||||
| دکمهٔ ثبتنام | `views/user/RegisterView.vue` |
|
||||
| گزینهٔ انتخابشدهٔ وزن/سایز و دکمهٔ صفحهٔ محصول | `components/product/SingleProduct.vue` |
|
||||
| برچسب روی کارت محصول | `components/product/ProductCard.vue` |
|
||||
| چیپهای جستجو و فیلتر | `views/search/SearchView.vue`، `components/search/Filters.vue` |
|
||||
| فیلترهای سفارشها | `views/user/OrdersView.vue` |
|
||||
| کلید روشن/خاموش | `components/ui/ToggleSwitch.vue` |
|
||||
| بازشدن منوی کشویی | `components/ui/DropDown.vue` |
|
||||
| دکمهٔ اصلی پنجرههای پایین صفحه | `components/ui/IslandSheet.vue` |
|
||||
| علاقهمندیها، صفحهٔ تنظیمات ظاهر | `FavoritesView.vue`، `AppearanceView.vue` |
|
||||
| دکمههای بخش کارشناس | `expert/ChildOrdersView.vue`، `expert/CustomerChoiceView.vue` |
|
||||
|
||||
حاشیهٔ گزینهٔ انتخابشده (در تنظیمات ظاهر) و حاشیهٔ خانهٔ کد تأیید (OTP) در هنگام تایپ هم از مشکی به زرشکی تغییر میکنند.
|
||||
|
||||
### ۲) جاهایی که زرشکی قبلاً «رنگ دوم» بوده ← زرشکی تیره
|
||||
برخی جاها زرشکی برای این بوده که از مشکیِ اصلی متمایز شوند؛ مثلاً چیپ فیلترِ فعال در جستجو و مرحلهٔ فعال سفارش. اکنون که رنگ اصلی زرشکی شده، این موارد **زرشکی تیره** (`@wineDeep`) میشوند تا تفاوت حفظ شود و مشکی هم وارد کار نشود.
|
||||
|
||||
### ۳) کارتهای تیرهٔ بزرگ ← زرشکی تیره
|
||||
کارت موجودی و دعوت به ورود در داشبورد، و نوار نرخ در صفحهٔ اصلی، اکنون مشکی هستند. با تغییر **یک مقدار** (`heroSurface`)، هر سه زرشکی تیره میشوند و گرادیان کارت موجودی از زرشکی تیره به زرشکی میرود.
|
||||
|
||||
### ۴) حالت تیره (Dark mode)
|
||||
در حالت تیره همان قاعده برقرار است: دکمهها با زرشکیِ روشنترِ حالت تیره نمایش داده میشوند و متن روی آنها سفید است. کارتهای بزرگ هم زرشکی خیلی تیره میشوند، نه خاکستری.
|
||||
|
||||
## سؤالها از شما
|
||||
|
||||
۱. **دکمهٔ «خروج»** اکنون زرشکی است تا از بقیه جدا باشد. اگر همهچیز زرشکی شود، این دکمه دیگر متمایز نیست.
|
||||
- **پیشنهاد من:** خروج **مشکی** شود (عملاً جای دو رنگ عوض میشود). این یکی از معدود جاهایی است که مشکی میماند.
|
||||
- گزینهٔ دیگر: قرمز (رنگ خطا).
|
||||
|
||||
۲. **کارتهای بزرگ داشبورد** (بند ۳): زرشکی تیره شوند یا مشکی بمانند؟
|
||||
- **پیشنهاد من:** زرشکی تیره، چون خواستید مشکی کمتر دیده شود. نتیجه این است که صفحهٔ داشبورد بهوضوح زرشکی دیده میشود.
|
||||
|
||||
## بعد از انجام
|
||||
- بیلد اپ و بررسی چشمی صفحههای اصلی، سبد خرید، محصول، جستجو، ورود و داشبورد، در هر دو حالت روشن و تیره.
|
||||
- یک خط یادداشت انتشار برای کاربر: «اپ: رنگ اصلی برنامه زرشکی شد».
|
||||
@@ -0,0 +1,51 @@
|
||||
# برند پروژه (زرتاج) — چکلیست تغییر نام
|
||||
|
||||
نام برند **زرتاج / Zartaj** است. برای عوض کردن نام دوباره **لازم نیست کل کد را بگردید**؛ فقط موارد همین فهرست.
|
||||
|
||||
## ۱. جاهایی که باید عوض شوند (فقط همینها)
|
||||
|
||||
| چه چیزی | کجا | توضیح |
|
||||
|---|---|---|
|
||||
| نام فارسی، نام لاتین، عنوان تب مرورگر، آدرس سایت | [`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-*` (پایین) | نام فایلها عمومی است؛ فقط خود تصویر را با همان نام جایگزین کنید. |
|
||||
|
||||
### فایلهای لوگو
|
||||
|
||||
- `apps/user-app/public/img/brand-logo.png` و `.webp`
|
||||
- `apps/user-app/src/assets/img/brand-logo.png`
|
||||
- `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) (مسیر تصویر ورودی را در خط اول آن عوض کنید)
|
||||
|
||||
### بعد از تغییر
|
||||
|
||||
1. `dist` هر سه فرانت و `apps/api/release` را دوباره بسازید (طبق روال انتشار).
|
||||
2. اگر در دیتابیس فعلی برندی به نام قدیمی در «برندهای محصول» هست، از پنل ادمین ویرایشش کنید (seed فقط دیتابیس خالی را پر میکند).
|
||||
|
||||
## ۲. عمداً عوض نشدهاند (نام داخلی، دیده نمیشوند)
|
||||
|
||||
اینها به کاربر نمایش داده نمیشوند و تغییرشان خرابی میآورد:
|
||||
|
||||
| مورد | چرا عوض نشد |
|
||||
|---|---|
|
||||
| کلیدهای مرورگر مثل `gold-bank:token` | تغییر = خروج همهٔ مشتریها از اپ |
|
||||
| جدول `_goldbank_migrations`، نام دیتابیس `goldbank`، سرویس داکر `goldbank-api` | تغییر = خراب شدن مایگریشن و استقرار روی سرور |
|
||||
| نام پکیجها `@gold-bank/*` و پوشهٔ پروژه | فقط نام فنی |
|
||||
| شناسهٔ برند محصول `brand-montzar` در دیتابیس | کلید اصلی است و محصولات به آن وصلاند؛ عنوانش به «زرتاج طلا» تغییر کرد |
|
||||
| پوشههای `henza_admin`، `henza_pwa`، `henza_server` و ارجاعهای کد به آنها | کد سیستم قدیمی، فقط برای مرجع |
|
||||
| آدرسهای `henzagold.com` در توضیحات کد | سابقهٔ سیستم قدیمی، اجرا نمیشوند |
|
||||
| پوشهٔ `docs/` (سوابق) | سابقهٔ کار است، نه متن برنامه |
|
||||
|
||||
## ۳. بررسی سریع
|
||||
|
||||
برای اطمینان از اینکه نام قدیمی جایی در متنهای برنامه نمانده:
|
||||
|
||||
```bash
|
||||
grep -rn "منتزر\|Montzar\|هنزا" apps/*/src apps/*/index.html apps/api/prisma/seed.ts
|
||||
```
|
||||
|
||||
خروجی خالی یعنی تمیز است.
|
||||
Reference in New Issue
Block a user