174 lines
8.5 KiB
Markdown
174 lines
8.5 KiB
Markdown
# دستورالعمل اجباری برای هوش مصنوعی — پروژه ابشوده / خانگی
|
||||
|
|
|
|||
|
|
این فایل را کامل به 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` اضافه کن.
|