8.5 KiB
8.5 KiB
دستورالعمل اجباری برای هوش مصنوعی — پروژه ابشوده / خانگی
این فایل را کامل به AI بده (Project Rules / Custom Instructions / System prompt).
هدف: توکن کمتر، یادگیری پایدار، حل سریع اصل کار، بدون تغییر الکی.
۱) با هر پرامپت کاربر — همین ترتیب
- اصل قضیه را یک خط مشخص کن (یک باگ / یک UI / یک فیچر).
- مسیر را از نقشه و یادداشت بگیر — کل ریپو را سرچ نکن.
- فقط ۱ تا ۳ فایل مربوط را باز/پچ کن.
- تمام کن؛ جواب کوتاه بده.
- یک خط یادداشت بخش بنویس (پایین ببین) تا دفعهٔ بعد فراموش نشود.
پرامپت → اصل کار → نقشه/یادداشت → Grep فقط همان پوشه → پچ محدود → یادداشت → تمام
ممنوع (سوخت توکن)
- دوباره پیدا کردن فایلی که در نقشه/یادداشت هست
- explore / گشت سراسری برای «X کجاست؟»
- خواندن کل فایل بلند وقتی چند ده خط کافی است
- refactor یا «درست کردن» فایلهای همجوار بدون درخواست
- کپی پچ به سیستم/اپ دیگر «برای کامل بودن»
۲) محدودهٔ تغییر — حساس
- فقط همان چیزی که کاربر گفته؛ جای بیربط را دست نزن.
- مبهم بود (هدف، اپ، برنچ، سیستم حسابداری) → بپرس؛ حدس نزن.
- روی برنچ فعلی بمان؛ checkout/merge به برنچ دیگر بدون اجازه ممنوع.
- هر زیرپروژه git جدا دارد؛ فقط همان ریپوی مربوط را عوض کن.
| کار | فقط این ریپو |
|---|---|
| ادمین | khaneghi_admin |
| API / SQL | khaneghi_server |
| اپ کاربر | khaneghi_user + تم + ghatreh_user (هر سه اگر رفتاری است) |
| سوپرادمین | controlpanel_server / controlpanel_user |
| بورس مس | فقط با درخواست صریح |
۳) حسابداری — قانون سخت
سیستمها جدا هستند: زرین (zarin) / تهحساب (tahesab) / پرگار (pargar).
- اگر گفت حسابداری/سند/سینک مشتری و نام نبرد → اول بپرس کدام؟
- تا جواب ندادی کد نزن و فایل سیستم دیگر را باز نکن.
- پچ یک سیستم را به بقیه کپی نکن مگر در همان پیام صریح بگوید.
۴) یادگیری قوی — یادداشت بخشها
هر کار تمامشده را در دفتر پروژه ثبت کن (اگر در این ریپو هست:
.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 استفاده کن
اولویت:
- BasicPacks پروژه (دکمه/آیکون/اینپوت/مدال) اگر هست
- Ant Design Vue (
a-button,a-input,a-table,a-spin,a-form, …) - UnoCSS برای layout و فاصله (
flex,grid,gap-*,w-full,min-w-0,sm:) - lodash برای داده (
get,debounce,cloneDeep,isEmpty, …) — helper تکراری ننویس - CSS/
<style>فقط وقتی utility کافی نیست (توکن تم، انیمیشن خاص)
❌ 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؟
- جواب کوتاه است؛ توضیح اضافه نداری؟
۱۱) نمونهٔ رفتار درست / غلط
❌ «همگامسازی مشتری خراب» → هر سه زرین/تهحساب/پرگار را عوض کند
✅ بپرسد کدام؟ بعد فقط همان
❌ 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 اضافه کن.