This commit is contained in:
2026-09-06 20:07:26 +03:30
parent 37b94ed32a
commit 7cd7261055
3 changed files with 356 additions and 0 deletions
+177
View File
@@ -0,0 +1,177 @@
---
description: دستورالعمل اجباری AI — پروژه ابشوده/خانگی (توکن کم، پچ محدود)
alwaysApply: true
---
# دستورالعمل اجباری برای هوش مصنوعی — پروژه ابشوده / خانگی
این فایل را کامل به AI بده (Project Rules / Custom Instructions / System prompt).
هدف: **توکن کمتر، یادگیری پایدار، حل سریع اصل کار، بدون تغییر الکی.**
---
## ۱) با هر پرامپت کاربر — همین ترتیب
1. اصل قضیه را **یک خط** مشخص کن (یک باگ / یک UI / یک فیچر).
2. مسیر را از **نقشه و یادداشت** بگیر — کل ریپو را سرچ نکن.
3. فقط **۱ تا ۳ فایل** مربوط را باز/پچ کن.
4. تمام کن؛ جواب کوتاه بده.
5. یک خط **یادداشت بخش** بنویس (پایین ببین) تا دفعهٔ بعد فراموش نشود.
```
پرامپت → اصل کار → نقشه/یادداشت → Grep فقط همان پوشه → پچ محدود → یادداشت → تمام
```
### ممنوع (سوخت توکن)
- دوباره پیدا کردن فایلی که در نقشه/یادداشت هست
- explore / گشت سراسری برای «X کجاست؟»
- خواندن کل فایل بلند وقتی چند ده خط کافی است
- refactor یا «درست کردن» فایل‌های هم‌جوار بدون درخواست
- کپی پچ به سیستم/اپ دیگر «برای کامل بودن»
---
## ۲) محدودهٔ تغییر — حساس
- **فقط** همان چیزی که کاربر گفته؛ جای بی‌ربط را دست نزن.
- مبهم بود (هدف، اپ، برنچ، سیستم حسابداری) → **بپرس**؛ حدس نزن.
- روی **برنچ فعلی** بمان؛ checkout/merge به برنچ دیگر بدون اجازه ممنوع.
- هر زیرپروژه git جدا دارد؛ فقط همان ریپوی مربوط را عوض کن.
| کار | فقط این ریپو |
|-----|----------------|
| ادمین | `khaneghi_admin` |
| API / SQL | `khaneghi_server` |
| اپ کاربر | `khaneghi_user` + تم + `ghatreh_user` (هر سه اگر رفتاری است) |
| سوپرادمین | `controlpanel_server` / `controlpanel_user` |
| بورس مس | فقط با درخواست صریح |
---
## ۳) حسابداری — قانون سخت
سیستم‌ها **جدا** هستند: زرین (`zarin`) / ته‌حساب (`tahesab`) / پرگار (`pargar`).
1. اگر گفت حسابداری/سند/سینک مشتری و **نام نبرد** → اول بپرس کدام؟
2. تا جواب ندادی کد نزن و فایل سیستم دیگر را باز نکن.
3. پچ یک سیستم را به بقیه کپی نکن مگر در همان پیام صریح بگوید.
---
## ۴) یادگیری قوی — یادداشت بخش‌ها
هر کار تمام‌شده را در دفتر پروژه ثبت کن (اگر در این ریپو هست:
`.cursor/skills/abshode-domain-lookup/learned-notes.md`):
```
- YYYY-MM-DD | موضوع | مسیر فایل(ها) | نکتهٔ ۱ خطی
```
قبل از هر Grep سراسری: **یادداشت‌ها را بخوان.**
اگر مسیر آنجا بود، دوباره سرچ نکن.
---
## ۵) نقشهٔ سریع مسیرها
| موضوع | کجا |
|-------|-----|
| تنظیمات ادمین | `khaneghi_admin/src/pages/menuPages/configuration/` |
| فلگ منو از settings | `khaneghi_admin/src/utils/config.ts` |
| مشتریان | `khaneghi_admin/src/pages/menuPages/customers/` |
| همگام ته‌حساب | `…/accounting/components/TahesabCustomerSync.vue`, `TahesabWalletBulkSync.vue` |
| کد حساب همکار | `…/colleagueOrders/components/ColleagueAccountingAccounts.vue` |
| API ته‌حساب (فرانت) | `khaneghi_admin/src/api/tahesab.ts` |
| تنظیمات سرور / overlay سوپرادمین | `SuperAdminProgramSettingsOverlay`, `SettingsController` |
| deploy settings | `khaneghi_server/database/sql/deploy_settings_const.sql` — **value موجود را UPDATE نکن** |
| قیمت ویژه مشتری | `customer_special_pricing` + منوی `customers/special-price` |
نقشهٔ کامل‌تر (اگر موجود): `.cursor/skills/abshode-domain-lookup/project-map.md`
---
## ۶) فرانت — زیاد از Ant + UnoCSS + lodash استفاده کن
اولویت:
1. **BasicPacks** پروژه (دکمه/آیکون/اینپوت/مدال) اگر هست
2. **Ant Design Vue** (`a-button`, `a-input`, `a-table`, `a-spin`, `a-form`, …)
3. **UnoCSS** برای layout و فاصله (`flex`, `grid`, `gap-*`, `w-full`, `min-w-0`, `sm:`)
4. **lodash** برای داده (`get`, `debounce`, `cloneDeep`, `isEmpty`, …) — helper تکراری ننویس
5. CSS/`<style>` فقط وقتی utility کافی نیست (توکن تم، انیمیشن خاص)
```text
❌ button خام + CSS بزرگ برای layout
✅ Ant/Basic + کلاس‌های Uno روی تمپلیت + lodash برای منطق داده
```
- `BasicButton` را با `:deep` برای عوض کردن layout داخلی خراب نکن.
- رنگ: توکن تم؛ از `bg-primary/10` روی CSS variable پرهیز کن (اغلب می‌شکند).
---
## ۷) UI حرفه‌ای — عینک گرافیک‌کار
- هر بلوک جدید: **عنوان + یک خط راهنما** (این کار چیست / دکمه کی زده شود).
- **باکس‌بندی خوب است؛ فضای مرده بد است** — کارت عریض با محتوا فقط در یک گوشه ممنوع.
- یا `sm:grid-cols-2` / `flex` تا پر شود، یا عرض باکس را محدود کن.
- موبایل: اکشن **زیر** توضیح (`flex-col`).
- دسکتاپ: کنار یا ستون دوم پر (`sm:flex-row` / `sm:grid`).
- **نسبت سرچ و دکمه:**
- موبایل: سرچ `w-full`؛ بعد دکمه‌ها با عرض مساوی (`grid` / `1fr`).
- اینپوت باریک کنار دکمهٔ پهن در یک ردیف wrap = زشت → ممنوع.
- بنر گرادیان جیغ و دکمهٔ `block` تمام‌عرض الکی ممنوع مگر اکشن اصلی صفحه باشد.
- فشرده باش: `p-2.5` / `gap-2`؛ عدد و padding غول‌پیکر نگذار.
---
## ۸) مهندسی بک‌اند / فرانت — بدون باگ الکی
- یک مسئولیت در هر کامپوننت / متد / سرویس؛ خدا-فایل نساز.
- UI نازک؛ منطق سنگین در composable یا Service.
- Controller نازک → Service؛ SQL و business را قاطی نکن.
- خطا، خالی، timeout، دوبار کلیک / race را طراحی کن (`running` قفل، early return).
- الگوی همان پوشه را کپی کن؛ اختراع ساختار جدید نکن مگر لازم باشد.
- نام‌گذاری گویا؛ قرارداد API فرانت و بک یکی باشد.
---
## ۹) سوپرادمین / تنظیمات دسترسی
- کلیدهای دسترسی مشتری (`customer_special_pricing`, `has_page_*`, …) مال سوپرادمین‌اند؛ در پنل خانگی معمولاً فقط‌خواندنی.
- منوی وابسته به فلگ باید از `get_settings` / overlay زنده بیاید؛ کش کهنه برای این کلیدها مطلوب نیست.
- دکمهٔ بروزرسانی تنظیمات پیشرفته باید همگام زنده از سوپرادمین را هم بزند اگر فلگ منو می‌خواهد عوض شود.
---
## ۱۰) چک قبل از اتمام
- [ ] diff فقط به درخواست مربوط است؟
- [ ] سیستم حسابداری / اپ / برنچ اشتباه درگیر نشده؟
- [ ] اگر مبهم بود سؤال شد؟
- [ ] یادداشت یک‌خطی نوشته شد؟
- [ ] UI: راهنما + بدون فضای مرده + نسبت سرچ/دکمه درست؟
- [ ] Ant / Uno / lodash به‌جای reinvent؟
- [ ] جواب کوتاه است؛ توضیح اضافه نداری؟
---
## ۱۱) نمونهٔ رفتار درست / غلط
```text
❌ «همگام‌سازی مشتری خراب» → هر سه زرین/ته‌حساب/پرگار را عوض کند
✅ بپرسد کدام؟ بعد فقط همان
❌ UI یک کارت → کل صفحه accounting را redesign کند
✅ فقط همان کارت / همان فایل
❌ هر بار از صفر Grep مونوریپو
✅ learned-notes + project-map → مستقیم فایل
❌ CSS سفارشی ۵۰ خط برای flex ساده
✅ class="flex flex-col gap-2 sm:grid sm:grid-cols-2"
```
---
**پایان.** این سند را به‌روز نگه دار؛ نکات جدید حساس را همین‌جا یا در `learned-notes.md` اضافه کن.
@@ -0,0 +1,6 @@
# یادداشت‌های یادگیری — abshode-domain-lookup
فرمت هر خط:
- YYYY-MM-DD | موضوع | مسیر فایل(ها) | نکتهٔ ۱ خطی
- 2026-09-06 | گیفت‌کارت | `database/migrations/2026_09_06_000001_create_giftcards_tables.php` | create جداول giftcards و giftcard_codes اگر نباشند؛ drop در down ندارد
+173
View File
@@ -0,0 +1,173 @@
# دستورالعمل اجباری برای هوش مصنوعی — پروژه ابشوده / خانگی
این فایل را کامل به AI بده (Project Rules / Custom Instructions / System prompt).
هدف: **توکن کمتر، یادگیری پایدار، حل سریع اصل کار، بدون تغییر الکی.**
---
## ۱) با هر پرامپت کاربر — همین ترتیب
1. اصل قضیه را **یک خط** مشخص کن (یک باگ / یک UI / یک فیچر).
2. مسیر را از **نقشه و یادداشت** بگیر — کل ریپو را سرچ نکن.
3. فقط **۱ تا ۳ فایل** مربوط را باز/پچ کن.
4. تمام کن؛ جواب کوتاه بده.
5. یک خط **یادداشت بخش** بنویس (پایین ببین) تا دفعهٔ بعد فراموش نشود.
```
پرامپت → اصل کار → نقشه/یادداشت → Grep فقط همان پوشه → پچ محدود → یادداشت → تمام
```
### ممنوع (سوخت توکن)
- دوباره پیدا کردن فایلی که در نقشه/یادداشت هست
- explore / گشت سراسری برای «X کجاست؟»
- خواندن کل فایل بلند وقتی چند ده خط کافی است
- refactor یا «درست کردن» فایل‌های هم‌جوار بدون درخواست
- کپی پچ به سیستم/اپ دیگر «برای کامل بودن»
---
## ۲) محدودهٔ تغییر — حساس
- **فقط** همان چیزی که کاربر گفته؛ جای بی‌ربط را دست نزن.
- مبهم بود (هدف، اپ، برنچ، سیستم حسابداری) → **بپرس**؛ حدس نزن.
- روی **برنچ فعلی** بمان؛ checkout/merge به برنچ دیگر بدون اجازه ممنوع.
- هر زیرپروژه git جدا دارد؛ فقط همان ریپوی مربوط را عوض کن.
| کار | فقط این ریپو |
|-----|----------------|
| ادمین | `khaneghi_admin` |
| API / SQL | `khaneghi_server` |
| اپ کاربر | `khaneghi_user` + تم + `ghatreh_user` (هر سه اگر رفتاری است) |
| سوپرادمین | `controlpanel_server` / `controlpanel_user` |
| بورس مس | فقط با درخواست صریح |
---
## ۳) حسابداری — قانون سخت
سیستم‌ها **جدا** هستند: زرین (`zarin`) / ته‌حساب (`tahesab`) / پرگار (`pargar`).
1. اگر گفت حسابداری/سند/سینک مشتری و **نام نبرد** → اول بپرس کدام؟
2. تا جواب ندادی کد نزن و فایل سیستم دیگر را باز نکن.
3. پچ یک سیستم را به بقیه کپی نکن مگر در همان پیام صریح بگوید.
---
## ۴) یادگیری قوی — یادداشت بخش‌ها
هر کار تمام‌شده را در دفتر پروژه ثبت کن (اگر در این ریپو هست:
`.cursor/skills/abshode-domain-lookup/learned-notes.md`):
```
- YYYY-MM-DD | موضوع | مسیر فایل(ها) | نکتهٔ ۱ خطی
```
قبل از هر Grep سراسری: **یادداشت‌ها را بخوان.**
اگر مسیر آنجا بود، دوباره سرچ نکن.
---
## ۵) نقشهٔ سریع مسیرها
| موضوع | کجا |
|-------|-----|
| تنظیمات ادمین | `khaneghi_admin/src/pages/menuPages/configuration/` |
| فلگ منو از settings | `khaneghi_admin/src/utils/config.ts` |
| مشتریان | `khaneghi_admin/src/pages/menuPages/customers/` |
| همگام ته‌حساب | `…/accounting/components/TahesabCustomerSync.vue`, `TahesabWalletBulkSync.vue` |
| کد حساب همکار | `…/colleagueOrders/components/ColleagueAccountingAccounts.vue` |
| API ته‌حساب (فرانت) | `khaneghi_admin/src/api/tahesab.ts` |
| تنظیمات سرور / overlay سوپرادمین | `SuperAdminProgramSettingsOverlay`, `SettingsController` |
| deploy settings | `khaneghi_server/database/sql/deploy_settings_const.sql` — **value موجود را UPDATE نکن** |
| قیمت ویژه مشتری | `customer_special_pricing` + منوی `customers/special-price` |
نقشهٔ کامل‌تر (اگر موجود): `.cursor/skills/abshode-domain-lookup/project-map.md`
---
## ۶) فرانت — زیاد از Ant + UnoCSS + lodash استفاده کن
اولویت:
1. **BasicPacks** پروژه (دکمه/آیکون/اینپوت/مدال) اگر هست
2. **Ant Design Vue** (`a-button`, `a-input`, `a-table`, `a-spin`, `a-form`, …)
3. **UnoCSS** برای layout و فاصله (`flex`, `grid`, `gap-*`, `w-full`, `min-w-0`, `sm:`)
4. **lodash** برای داده (`get`, `debounce`, `cloneDeep`, `isEmpty`, …) — helper تکراری ننویس
5. CSS/`<style>` فقط وقتی utility کافی نیست (توکن تم، انیمیشن خاص)
```text
❌ button خام + CSS بزرگ برای layout
✅ Ant/Basic + کلاس‌های Uno روی تمپلیت + lodash برای منطق داده
```
- `BasicButton` را با `:deep` برای عوض کردن layout داخلی خراب نکن.
- رنگ: توکن تم؛ از `bg-primary/10` روی CSS variable پرهیز کن (اغلب می‌شکند).
---
## ۷) UI حرفه‌ای — عینک گرافیک‌کار
- هر بلوک جدید: **عنوان + یک خط راهنما** (این کار چیست / دکمه کی زده شود).
- **باکس‌بندی خوب است؛ فضای مرده بد است** — کارت عریض با محتوا فقط در یک گوشه ممنوع.
- یا `sm:grid-cols-2` / `flex` تا پر شود، یا عرض باکس را محدود کن.
- موبایل: اکشن **زیر** توضیح (`flex-col`).
- دسکتاپ: کنار یا ستون دوم پر (`sm:flex-row` / `sm:grid`).
- **نسبت سرچ و دکمه:**
- موبایل: سرچ `w-full`؛ بعد دکمه‌ها با عرض مساوی (`grid` / `1fr`).
- اینپوت باریک کنار دکمهٔ پهن در یک ردیف wrap = زشت → ممنوع.
- بنر گرادیان جیغ و دکمهٔ `block` تمام‌عرض الکی ممنوع مگر اکشن اصلی صفحه باشد.
- فشرده باش: `p-2.5` / `gap-2`؛ عدد و padding غول‌پیکر نگذار.
---
## ۸) مهندسی بک‌اند / فرانت — بدون باگ الکی
- یک مسئولیت در هر کامپوننت / متد / سرویس؛ خدا-فایل نساز.
- UI نازک؛ منطق سنگین در composable یا Service.
- Controller نازک → Service؛ SQL و business را قاطی نکن.
- خطا، خالی، timeout، دوبار کلیک / race را طراحی کن (`running` قفل، early return).
- الگوی همان پوشه را کپی کن؛ اختراع ساختار جدید نکن مگر لازم باشد.
- نام‌گذاری گویا؛ قرارداد API فرانت و بک یکی باشد.
---
## ۹) سوپرادمین / تنظیمات دسترسی
- کلیدهای دسترسی مشتری (`customer_special_pricing`, `has_page_*`, …) مال سوپرادمین‌اند؛ در پنل خانگی معمولاً فقط‌خواندنی.
- منوی وابسته به فلگ باید از `get_settings` / overlay زنده بیاید؛ کش کهنه برای این کلیدها مطلوب نیست.
- دکمهٔ بروزرسانی تنظیمات پیشرفته باید همگام زنده از سوپرادمین را هم بزند اگر فلگ منو می‌خواهد عوض شود.
---
## ۱۰) چک قبل از اتمام
- [ ] diff فقط به درخواست مربوط است؟
- [ ] سیستم حسابداری / اپ / برنچ اشتباه درگیر نشده؟
- [ ] اگر مبهم بود سؤال شد؟
- [ ] یادداشت یک‌خطی نوشته شد؟
- [ ] UI: راهنما + بدون فضای مرده + نسبت سرچ/دکمه درست؟
- [ ] Ant / Uno / lodash به‌جای reinvent؟
- [ ] جواب کوتاه است؛ توضیح اضافه نداری؟
---
## ۱۱) نمونهٔ رفتار درست / غلط
```text
❌ «همگام‌سازی مشتری خراب» → هر سه زرین/ته‌حساب/پرگار را عوض کند
✅ بپرسد کدام؟ بعد فقط همان
❌ UI یک کارت → کل صفحه accounting را redesign کند
✅ فقط همان کارت / همان فایل
❌ هر بار از صفر Grep مونوریپو
✅ learned-notes + project-map → مستقیم فایل
❌ CSS سفارشی ۵۰ خط برای flex ساده
✅ class="flex flex-col gap-2 sm:grid sm:grid-cols-2"
```
---
**پایان.** این سند را به‌روز نگه دار؛ نکات جدید حساس را همین‌جا یا در `learned-notes.md` اضافه کن.