بيانات الموجهات

جُمعت مكتبة موجهات IMGPrompt من مصادر على الإنترنت، ومن promptoMANIA وsd-webui-prompt-all-in-one وawesome-gpt-image-2-prompts (برخصة CC BY 4.0). وبعد إزالة التكرارات والتوحيد القياسي والتوطين إلى 18 لغة، أصبح لدينا 5000+ مدخلة لموجهات الصور والفيديو موزعة على 16 تصنيفًا رئيسيًا ومئات التصنيفات الفرعية.

بنية البيانات

تُخزَّن كل بيانات الموجهات في مجلد المشروع src/app/data بالبنية التالية:

src
└── app
    └── data
        ├── prompt              # Prompts in 18 languages
        │   ├── prompt-zh.json  # Simplified Chinese (source of truth; others derived from it)
        │   ├── prompt-en.json  # English
        │   ├── prompt-ja.json  # Japanese
        │   └── ......          # 15 other languages
        └── prompt-custom.json  # User-defined prompts (loaded for all languages)

كل موجه كائن JSON واحد:

{
  "displayName": "portrait",
  "langName": "بورتريه",
  "object": "شكل",
  "attribute": "أساسي",
  "description": "(اختياري) وصف أو نسبة إلى المؤلف",
  "preview": "(اختياري) رابط صورة المعاينة"
}

مرجع الحقول

الحقل إلزامي؟ الوصف
displayName ✅ نعم الموجه الإنجليزي (فريد) — النص الذي يُدرج فعليًا في صندوق الموجه
langName ✅ نعم الترجمة باللغة الأم / الهدف، وتظهر على العلامة في الواجهة
object ✅ نعم التصنيف الرئيسي (مثل شكل / بيئة / التصوير / أسلوب الفن)
attribute ✅ نعم التصنيف الفرعي (مثل أساسي / تعبير / تركيز العدسة / ارتفاع المشاهدة)
description ❌ لا شرح إضافي يظهر داخل نافذة المعاينة (نسبة المؤلف، إرشادات الاستخدام…) — يظهر بالتمرير على سطح المكتب / الضغط المطول على اللمس
preview ❌ لا رابط صورة المعاينة — تُعرض داخل النافذة المنبثقة بالتمرير على سطح المكتب أو الضغط المطول نحو 0.5 ثانية على اللمس، والنقر / اللمس يفتحها مكبّرة في lightbox

💡 حقل preview هو مصدر بيانات ميزة «المعاينة بالتمرير / الضغط المطول + التكبير بالنقر». يعمل سطح المكتب بالتمرير، والأجهزة اللمسية بالضغط المطول، فتبقى النقرة / اللمسة السريعة للإضافة / الإزالة فقط.

نصائح صيانة البيانات

  • يجب أن يكون displayName فريدًا — تُتجاهل التكرارات وتُضعف جودة الاقتراحات.
  • اتفاقية الفاصلة: ", " (فاصلة + مسافة) هي فاصل العلامات في التطبيق؛ أما داخل المدخلات التجميعية فاستخدم "," بلا مسافة (مثل snow,ice). تُرفض الفواصل المتبوعة بمسافة أو كاملة العرض عند البناء (تحقق sliceData).
  • أعد استخدام قيم object / attribute نفسها عبر اللغات لتبقى تصنيفات الواجهة متسقة.
  • اجعل langName موجزًا قدر الإمكان لتفادي اقتطاع نص العلامة.
  • يُنصح في preview بصيغة WebP بحجم ≤ 150 KB وتكوين مربع (1:1) — فهي الأفضل عرضًا داخل نافذة التمرير / الضغط المطول.

إضافة موجهات مخصصة

لتوسيع محتوى الموجهات، استخدم محول بيانات IMGPrompt لتحويل بياناتك المخصصة إلى الصيغة القياسية، ثم احفظ الناتج في src/app/data/prompt-custom.json. يُحمَّل هذا الملف تلقائيًا عند بدء التطبيق ويسري على جميع اللغات.

مثال:

[
  {
    "displayName": "cyberpunk cityscape",
    "langName": "مدينة سايبربانك",
    "object": "بيئة",
    "attribute": "مدينة"
  },
  {
    "displayName": "cinematic lighting",
    "langName": "إضاءة سينمائية",
    "object": "تأثيرات الضوء والظل",
    "attribute": "تأثيرات الإضاءة",
    "description": "ضوء اتجاهي ناعم + إضاءة حافة لتعزيز العمق",
    "preview": "https://example.com/preview/cinematic.webp"
  }
]

تتبع المدخلات المخصصة قواعد العرض نفسها تمامًا التي تتبعها المدخلات المدمجة: المزودة بـ preview تحصل على المعاينة بالتمرير / الضغط المطول + التكبير بالنقر.