Files
boursecu_server/AI_TEAM_PROMPT.md
T
2026-09-06 20:07:26 +03:30

174 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# دستورالعمل اجباری برای هوش مصنوعی — پروژه ابشوده / خانگی
این فایل را کامل به 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` اضافه کن.