تخطَّ إلى المحتوى

هلا جي بي تي

مكتبة البرومبتات

اختر برومبت يناسب شغلك، راجع نصه، ثم خصصه أو استخدمه في مساعدك المفضل.

تم العثور على 1454
أكاديمية هلادورة جديدة

ابدأ الذكاء الاصطناعي من أساسه

دورة ذكاء اصطناعي أصلية داخل الموقع، بلغتين، فيها 24 درس أساسي وتقدّم يحترم خصوصيتك ومعاينات دفاتر آمنة ومختبرات عملية.

استكشف الدورة

من نص البرومبت

منصة إطلاق توكنات على شبكة سولانا لتوكنات SPL وSOL2020، مع دعم البيانات الوصفية (metadata) ومنحنى التسعير (bonding curve)، وإتاحة الترحيل لاحقًا إلى AMM داخل التطبيق. الفكرة تعيد صياغة نموذج pump.fun وvirtuals، لكن بمنظور مختلف: بناء DAO تُدار بالكامل بواسطة وكلاء ذكاء اصطناعي، بحيث يستطيع حاملو التوكنات إنشاء وكلاء AI وإدخالهم في صميم آليات اتخاذ القرار والتصويت. يهدف المشروع إلى إنشاء آلية لإعادة شراء التوكنات بدون حوكمة بشرية مباشرة، وباعتماد كامل على وكلاء AI في إدارة القرارات. كما يتضمن دمج تجربة توقعات صعود/هبوط بأسلوب تفاعلي مُلعّب، لدعم تمويل التوكن الأصلي، وتطوير التطبيق، وبرامج التوزيع (airdrops)، مع تخصيص 10% للفريق.

من نص البرومبت

لقطة مقرّبة جدًا لبيضة دجاج تتشقق فوق القش، مع إبراز ملمس القشرة بتفاصيل فائقة الدقة. صوص حديث الفقس بلا ريش، جلده وردي ومبلل ومجعد. عدسة واسعة جدًا 14mm تمنح منظورًا دراميًا، بأسلوب فائق الواقعية بدقة 8K وأجواء سينمائية. --ar 9:16.

موجّه فعّال لجمع معلومات عن أي موضوع تود الكتابة عنه؛ يقدّم معلومات أساسية أو متخصصة، مع تقسيم كل نوع إلى محاور فرعية قابلة للتوسّع.

من نص البرومبت

## *موجّه جمع المعلومات* --- ## *مدخلات الموجّه* - أدخل موضوع الموجّه = topic - **الموضوع المُدخل هو متغيّر داخل أقواس معقوفة، وسيُشار إليه باسم "M" طوال هذا الموجّه.** --- ## *مبادئ الموجّه* - أنا باحث أعدّ مقالات في مواضيع متنوعة. - دورك **قطعًا ليس** مساعدتي في تخطيط المقال أو بنائه. (هذه أهم نقطة) 1. **لا تقترح عليّ أبدًا مقالًا عن "M".** 2. **لا تقدّم لي أي نصائح حول تخطيط مقال عن "M" أو هيكلته.** - دورك فقط أن تزوّدني بمعلومات عن "M" حتى أستفيد منها، و**بناءً على ما أتعلّمه من هذه المعلومات، ==أنا بنفسي== أتمكن من تخطيط المقال وبنائه.** - في قسم "مخرجات الموجّه"، توجد عدة مخرجات، وكل مخرج له رقم، مثل: المخرج 1، المخرج 2، وهكذا. - **طريقة عمل المخرجات:** 1. **في البداية، بعد إرسال هذا الموجّه، اسألني أي مخرج أحتاج.** 2. سأكتب رقم المخرج المطلوب، مثل: "1" أو "2"، وهكذا. 3. قدّم فقط المخرج المرتبط بذلك الرقم تحديدًا. 4. بعد تقديم المخرج المطلوب، إذا كتبت **"more"**، وسّع نفس نوع المخرج المرقّم. - بغضّ النظر عن المخرج الذي تقدّمه، أو هل كتبت "more" أم لا؛ يجب أن يكون ردّك في كل الأحوال **مفصّلًا للغاية** وأن تستخدم **أقصى قدر ممكن من الأحرف والرموز (Tokens)** في المخرجات. (مهم جدًا) - شكرًا لتعاونك أيها المساعد المحترم! --- ## *مخرجات الموجّه* --- ### *المخرج 1* - اسم هذا المخرج: **"المعلومات الأساسية"** - يتضمن الآتي: - **مقدمة** عن "M" - معلومات **عامة** عن "M" - أبرز **النقاط المهمة** والمحاور الأساسية عن "M" - إذا كُتب "2"، انتقل إلى المخرج التالي. - إذا كُتب "more"، وسّع هذا النوع من المخرجات. --- ### *المخرج 2* - اسم هذا المخرج: **"المعلومات المتخصصة"** - يتضمن: - معلومات أكثر أكاديمية وتخصصًا - إذا كان موضوع الموجّه هو تطوير الشخصيات: - في تطوير شخصيات الفانتازيا، قدّم معلومات أكثر تفصيلًا مثل آراء المعجبين المتعمّقين، وقصص الشخصية التفصيلية، والأعمال الفرعية أو القصص المشتقة المرتبطة بالشخصية. - في الشخصيات الواقعية، قدّم قصصًا شخصية أكثر، وعادات، وسلوكيات، ومعلومات تفصيلية متاحة أو موثّقة عن الشخصية. - طريقة تقديم المخرج: 1. اعرض المواضيع المختلفة التي ستغطيها المعلومات المتخصصة عن "M" على شكل قائمة تشبه "فهرس المحتويات"؛ وهذه تُعد المواضيع الأولية. 2. بعدها اكتب: - "أي موضوع يهمك؟" - إذا كُتب اسم الموضوع المطلوب، قدّم معلومات متخصصة كاملة عن ذلك الموضوع. - "إذا تحتاج مواضيع أكثر عن 'M'، اكتب 'more'" - إذا كُتب "more"، قدّم مواضيع إضافية تتجاوز القائمة الأولية. وإذا كُتب "more" مرة أخرى بعد الجولة الثانية، أضف مزيدًا من المواضيع الأولية بعد المجموعتين السابقتين. - ملاحظة لك: عند تجهيز المواضيع في البداية، حاول تضمين أكبر عدد ممكن من المواضيع ذات الصلة لتقليل الحاجة لاستخدام هذا الخيار. - "إذا تحتاج الوصول إلى المواضيع الفرعية لأي موضوع، اكتب 'topics ... (desired topic)'." - إذا كُتب النص المحدد، قدّم المواضيع الفرعية للمواضيع الأولية. - حتى لو كتبت "topics ... (a secondary topic)"، قدّم أيضًا المواضيع الفرعية لتلك المواضيع الثانوية، ويمكن تسميتها "مواضيع المستوى الثالث"، ويمكن الاستمرار بهذه الطريقة إلى أي مستوى. - في أي مرحلة من مراحل المواضيع، سواء كانت أولية أو ثانوية أو من المستوى الثالث أو غيرها، فإن كتابة "more" تعني دائمًا توسيع المواضيع في نفس المستوى الحالي. - **الخلاصة**: - إذا كُتب اسم الموضوع فقط، قدّم معلومات متخصصة بصيغة ذلك الموضوع. - إذا كُتب "topics ... (another topic)"، تعامل مع المواضيع الفرعية لذلك الموضوع. - إذا كُتب "more" بعد تقديم قائمة مواضيع، وسّع المواضيع في نفس المستوى. - إذا كُتب "more" بعد تقديم معلومات عن موضوع، قدّم معلومات متخصصة إضافية عن ذلك الموضوع. 3. في أي مرحلة، إذا كُتب "1"، ارجع إلى "المخرج 1". - عند تقديم قائمة مواضيع في أي مستوى، ذكّرني أنه إذا كتبت "1" فقط فسنعود إلى "المعلومات الأساسية"؛ أما إذا كتبت "option 1" فسنذهب إلى العنصر الأول في تلك القائمة.

طريقة فعّالة ومنظّمة لصياغة موجهات الذكاء الاصطناعي باستخدام إطار TCRE: المهمة، السياق، المراجع، والتقييم/التكرار.

من نص البرومبت

أرغب في إنشاء موجّه ذكاء اصطناعي فعّال جدًا باستخدام إطار TCRE (Task, Context, References, Evaluate/Iterate). هدفي هو **insert_objective**. الخطوة 1: اطرح عليّ أسئلة متعددة ومنظّمة ومحددة—سؤالًا واحدًا في كل مرة—لجمع كل المدخلات الأساسية لكل مكوّن من مكوّنات إطار TCRE. وعند الحاجة، استخدم تقنية «لماذا؟» خمس مرات (5 Whys) لاكتشاف سياق أعمق وفهم أدق للنية والهدف. الخطوة 2: بعد أن تجمع معلومات كافية، أنشئ أفضل نسخة ممكنة من الموجّه النهائي. الخطوة 3: قيّم الموجّه باستخدام إطار TCRE، واشرح بإيجاز كيف يحقق كل عنصر من عناصر الإطار. الخطوة 4: اقترح تحسينات محددة وقابلة للتنفيذ لرفع وضوح الموجّه واكتماله وتأثيره. إذا كان أي شيء غير واضح، أو كنت تحتاج إلى سياق أو أمثلة إضافية، فاطرح أسئلة متابعة قبل المتابعة. يمكنك تطبيق أفضل ممارسات هندسة الموجهات عندما يكون ذلك مفيدًا.

طريقة منظّمة وموجّهة لتعلّم موضوعات جديدة وفق معرفتك الحالية.

من نص البرومبت

subject= current_level= time_available= learning_style= goal= الخطوة 1: تقييم المعرفة 1. جزّئ subject إلى مكوّناته الأساسية 2. قيّم مستوى التعقيد لكل مكوّن 3. ارسم خريطة للمتطلبات السابقة والعلاقات بين المواضيع 4. حدّد المفاهيم التأسيسية المخرج المطلوب: شجرة مهارات تفصيلية وتدرّج هرمي للتعلّم ~ الخطوة 2: تصميم مسار التعلّم 1. أنشئ مراحل تقدّم بناءً على current_level 2. رتّب المواضيع بالتسلسل الأنسب للتعلّم 3. قدّر الوقت المطلوب لكل موضوع 4. واءم الخطة مع قيود time_available المخرج المطلوب: خارطة طريق تعليمية منظّمة بأطر زمنية واضحة ~ الخطوة 3: انتقاء الموارد التعليمية 1. حدّد مصادر تعليمية تناسب learning_style: - دورات فيديو - كتب/مقالات - تمارين تفاعلية - مشاريع تطبيقية 2. رتّب الموارد حسب الفاعلية 3. جهّز مسار موارد مرتّب للمتابعة المخرج المطلوب: قائمة موارد شاملة مرتبة حسب الأولوية ~ الخطوة 4: إطار التطبيق والممارسة 1. صمّم تمارين لكل موضوع 2. أنشئ سيناريوهات تطبيق واقعية 3. حدّد نقاط تحقّق لقياس التقدّم 4. نظّم فترات المراجعة المخرج المطلوب: خطة ممارسة مع جدول مراجعة بالتكرار المتباعد ~ الخطوة 5: نظام تتبّع التقدّم 1. عرّف مؤشرات تقدّم قابلة للقياس 2. أنشئ معايير للتقييم 3. صمّم آليات للتغذية الراجعة 4. حدّد مقاييس إنجاز لكل مرحلة المخرج المطلوب: قالب لتتبّع التقدّم مع مقاييس مرجعية ~ الخطوة 6: إعداد جدول الدراسة 1. قسّم التعلّم إلى مهام يومية/أسبوعية 2. أضف فترات راحة ومراجعة 3. أدرج تقييمات عند نقاط التحقّق 4. وازن بين الجانب النظري والتطبيق العملي المخرج المطلوب: جدول دراسة تفصيلي متوافق مع time_available

من نص البرومبت

[00:00 - 00:03] لقطة ماكرو تفصيلية بعدسة 100mm لخادرة خضراء معلّقة على غصن، إضاءة سينمائية وقت الساعة الذهبية، الخادرة تهتز وتتحول بسرعة إلى شبه شفافة لتكشف داخلها عن أنماط أجنحة مطوية باللونين البرتقالي والأسود، واقعية فائقة بدقة 8K، ملامس عضوية مجهرية، لقطة طويلة ثابتة بأسلوب رصدي. --ar 9:16 [00:03 - 00:06] تصوير زمني متسارع ماكرو بعدسة 100mm لفراشة ملكية تخرج من غلاف الخادرة، أجنحتها المبللة تنفرد وتتصلّب فورًا، تفاصيل حادة لحراشف الأجنحة، خلفية غابة دافئة ببوكيه ناعم، إضاءة الساعة الذهبية، واقعية فائقة بدقة 8K، جودة فيلم سينمائية، لقطة طويلة ثابتة بأسلوب رصدي. --ar 9:16

أعد تصميم الصفحة الرئيسية لتشمل الشريط العلوي، الوسوم، بطاقات المدونة، وبطاقة التوثيق، مع تحسين الواجهة لتكون أوضح، أرتب، وأكثر جاذبية.

من نص البرومبت

أعد تصميم الصفحة الرئيسية لتشمل الشريط العلوي، الوسوم، بطاقات المدونة، وبطاقة التوثيق، مع تحسين الواجهة لتكون أوضح، أرتب، وأكثر جاذبية.

نص

تصرّف كأستاذ في الأبحاث السريرية يوجّه طالبًا في إعداد وتقديم موضوع بحث سريري بأسلوب أكاديمي واضح ومقنع.

من نص البرومبت

تصرّف كأستاذ في الأبحاث السريرية. أنت خبير في التجارب السريرية ومنهجيات البحث العلمي. مهمتك هي إرشاد طالب في إعداد عرض تقديمي عن موضوع محدد في البحث السريري. ستتولى ما يلي: - مساعدة الطالب في اختيار موضوع بحث مناسب من محتوى المقرر. - توجيه الطالب لإجراء مراجعة متعمقة للأدبيات وتحليل البيانات بشكل منهجي. - مساعدته في بناء العرض بطريقة واضحة ومؤثرة. - تقديم نصائح عملية لتقديم العرض بثقة وفعالية. - تشجيع دمج أبحاث متقدمة وزوايا مبتكرة في الطرح. - اقتراح طرق لإدراج أحدث النتائج البحثية والرؤى المتقدمة في المجال. القواعد: - تأكد أن جميع الأبحاث والمراجع موثّقة بشكل صحيح وملتزمة بالمعايير الأكاديمية. - حافظ على الأصالة وشجّع التفكير النقدي. - ركّز على العمق، والجِدّة، والتوجهات المستقبلية في العرض. المتغيرات: - topic - موضوع البحث السريري المحدد - formal - أسلوب العرض التقديمي - 10-15 minutes - المدة المتوقعة للعرض

طوّر تطبيق قمع مبيعات متكاملًا باستخدام React Flow، مع التركيز على ميزات جاهزة للإنتاج، وتصميم الجوال أولًا، وأفضل ممارسات كتابة الكود.

من نص البرومبت

تصرّف بصفتك مطوّر Full-Stack متخصصًا في قمع المبيعات. مهمتك هي بناء تطبيق قمع مبيعات جاهز للإنتاج باستخدام React Flow. يجب أن يحقق التطبيق ما يلي: - ابدأ المشروع باستخدام Vite مع قالب React، وادمج @xyflow/react لإنشاء مرئيات تفاعلية مبنية على العُقد (Nodes). - طوّر ميزات جاهزة للإنتاج تشمل جمع بيانات العملاء المحتملين، مثل نماذج طلب عرض سعر أو حجز استشارة، وتتبع التحويلات، وربط أدوات التحليلات. - طبّق مبادئ تصميم الجوال أولًا لتحسين تجربة المستخدم على جميع الأجهزة باستخدام CSS متجاوب واستعلامات الوسائط (Media Queries). - التزم بأفضل ممارسات كتابة الكود، مثل البنية المعيارية، والمكوّنات القابلة لإعادة الاستخدام، وإدارة الحالة بما يدعم التوسع وسهولة الصيانة. - نفّذ اختبارات شاملة باستخدام أدوات مثل Jest و React Testing Library لضمان جودة الكود وسلامة الوظائف بدون الاعتماد على بيانات وهمية. حسّن تجربة المستخدم من خلال: - تصميم واجهة بسيطة وبديهية تسهّل الاستخدام وتحافظ على تفاعلات عالية الجودة. - بناء واجهة نظيفة ومنظمة تستخدم عناصر مثل القوائم المنسدلة والألواح الجانبية المنزلقة دخولًا وخروجًا لتحسين التنقّل وسهولة الوصول. استخدم الإعداد التالي للبدء بالمشروع: ```javascript pnpm create vite my-react-flow-app --template react pnpm add @xyflow/react import { useState, useCallback } from 'react'; import { ReactFlow, applyNodeChanges, applyEdgeChanges, addEdge } from '@xyflow/react'; import '@xyflow/react/dist/style.css'; const initialNodes = [ { id: 'n1', position: { x: 0, y: 0 }, data: { label: 'Node 1' } }, { id: 'n2', position: { x: 0, y: 100 }, data: { label: 'Node 2' } }, ]; const initialEdges = [{ id: 'n1-n2', source: 'n1', target: 'n2' }]; export default function App() { const [nodes, setNodes] = useState(initialNodes); const [edges, setEdges] = useState(initialEdges); const onNodesChange = useCallback( (changes) => setNodes((nodesSnapshot) => applyNodeChanges(changes, nodesSnapshot)), [], ); const onEdgesChange = useCallback( (changes) => setEdges((edgesSnapshot) => applyEdgeChanges(changes, edgesSnapshot)), [], ); const onConnect = useCallback( (params) => setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot)), [], ); return ( <div style={{ width: '100vw', height: '100vh' }}> <ReactFlow nodes={nodes} edges={edges} onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onConnect={onConnect} fitView /> </div> ); } ```

نص

من نص البرومبت

ابتسمت والطفل يتوقف عن التنفّس. أحكي قصته لأن الناس ما زالوا يسألون: ليه القصر القديم مقفل؟ وليه ما أحد يقرّب من النهر اليابس بالليل؟ أنا كنت هناك. شفت اللي صار. وقتها ما فهمت. الحين أفهم. صار هذا وأنا صغير، في بلدة صغيرة بغرب أفريقيا. كان عندنا ملكة. ما وُلدت ملكة؛ تزوجت الملك وهو كبير في السن، ولما مات، بقيت هي. كانوا يسمّونها أمّ الأرض. يقولون إنها طيبة. يقولون إنها جابت السلام. وأنا صدّقتهم في البداية. كنت أشتغل في القصر مساعدًا. أشيل الماء، وأنظّف الأرضيات، وأنام في غرفة صغيرة قرب الجدار الخلفي. كنت أشوف أشياء ما كان غيري يشوفها. أول شيء لاحظته أن الملكة ما كانت تكبر. مرت سنين. الأطفال كبروا. الشيبان ماتوا. والملكة كما هي. نفس الوجه. نفس البشرة. نفس النظرات الحادة. إذا مزح الناس عن عمرها، كانوا يضحكون ويمشّون الموضوع. يقولون: «دمها طيب»، أو «تستخدم أعشاب». لكن بالليل، كنت أسمع أشياء. في بعض الليالي أسمع بكاء. مو عالي. خافت. كأن أحد يحاول ما ينسمع. كان يطلع من الغرفة الداخلية؛ الغرفة اللي ممنوع على أي عامل يدخلها. لما سألت بقية الخدم، قالوا ما سمعوا شيئًا. بعدها بدأ الأطفال يختفون. في البداية كان طفلًا واحدًا. ولد كان يبيع البرتقال قرب البوابة. قالوا إنه هرب. ثم بنت من ناحية النهر. ثم ولد آخر. دائمًا أطفال فقراء. دائمًا أطفال ما لهم عائلة قوية تحميهم. الملكة ما قالت شيئًا. والحراس ما قالوا شيئًا. في ليلة، طلبت مني كبيرة الخدم أجيب ماء للغرفة الداخلية. هذا الشيء ما صار قبل. يديني كانت ترجف وأنا أمشي إلى هناك. كان الباب نصف مفتوح. ليتني رجعت. داخل الغرفة، كانت الرائحة سيئة. رائحة دم ودخان. كانت فيه أوعية على الأرض، وبقع داكنة على الحصير. كانت الملكة واقفة قرب الجدار، تغسل يديها. وعلى الحصير كانت طفلة. صغيرة. عيناها مفتوحتان، لكنها ما كانت تتحرك. نظرت إليّ الملكة وابتسمت. قالت: «تأخرت». ما قدرت أتكلم. ما قدرت أتحرك. قالت لي: «حط الماء». جسمي أطاع قبل ما يقدر عقلي يمنعه. ركعت عند الطفلة ولمست وجهها. الطفلة ما تفاعلت. قالت الملكة: «بتخدم الأرض. مثل اللي قبلها». ثم فعلت شيئًا لن أنساه أبدًا. وضعت فمها على صدر الطفلة وسحبت نفسًا. بقوة. ببطء. كأنها تشرب الهواء من داخلها. انفتح فم الطفلة، لكن ما طلع منه أي صوت. لما وقفت الملكة، كانت الطفلة ساكنة. بدت بشرة الملكة أصفى، وعيونها مفعمة بالحياة. ركضت. ما توقفت إلا لما وصلت غرفتي. تقيأت على الأرض. بكيت بلا صوت. كنت أبغى أهرب، لكني عرفت أني ما أقدر. البوابات تُقفل بالليل. في الصباح التالي، أعلنت الملكة احتفالًا. قالت إن الأرض مباركة. دقّت الطبول. رقص الناس. وما أحد تكلم عن الأطفال المفقودين. حاولت أقول لأحد. قلت لحارس. حدّق فيني ومشى. قلت لعجوز تبيع الأكل قرب القصر. نظرت إليّ وقالت: «انتبه لنفسك». في تلك الليلة، طرق أحدهم بابي. كانت الملكة. دخلت وحدها. بلا حراس. جلست على حصيري كأنه ملكها. قالت: «أنت شفت». هززت رأسي. قالت إنها مختارة من زمان. وإن الأرض تحتاج دمًا عشان تبقى خصبة. وإن الأطفال قرابين. وإنها لو توقفت، الأرض بتموت. ثم لمست رأسي. قالت: «بتنسى». ما نسيت. لكني سكتّ. اختفى أطفال أكثر. وبقيت الأرض خصبة. نمت المحاصيل. وجاء المطر في وقته. مرت سنين. ثم جاء موسم جفاف. طويل وقاسٍ. فشلت المحاصيل. وغضب الناس. بدأوا يتهامسون أن الملكة فقدت قوتها. في ليلة، رجع البكاء. هذه المرة كان أعلى. تبعت الصوت. كان باب الغرفة الداخلية مفتوحًا من جديد. في الداخل، كانت الملكة ضعيفة. بدت عجوزًا. جلدها مترهل. شعرها خفيف. وعلى الحصير كان ولد. حي. مربوط. يبكي. حاولت تتغذّى منه. لكنها ما قدرت. ما أدري وش اللي صار لي. مسكت مشعلًا وصرخت. ركض الحراس إلى الداخل. وتبعهم الناس. شافوا كل شيء. الولد. البقع. الأوعية. والملكة على ركبتيها. صرخت. ما كان صراخ خوف. كان غضب. سحبوها إلى الخارج. قاومت مثل وحش. عند النهر، اتخذ كبار البلدة قرارهم. بلا محاكمة. بلا كلام. ربطوها ودفعوها في الماء. لم تغرق. طفت على السطح. ضحكت. ثم سحبها الماء إلى الأسفل. وفي السنة التالية، جف النهر. وأُغلق القصر. غادرت البلدة بعد ذلك بوقت قصير. ما زال الناس يقولون إن الملكة مجرد حكاية. كذبة. طريقة لتفسير الأشياء السيئة. أنا أعرف الحقيقة. أحيانًا، لما يكون الليل هادئًا، أسمع نفسًا ليس لي. وأتذكر ابتسامتها.

يساعد هذا الموجّه على صياغة سرديات بيعية مؤثرة تربط المنتج بهوية العميل، وتحول المهتمين إلى عملاء أوفياء بأسلوب مقنع وجاذب.

من نص البرومبت

1{
2 "role": "خبير السرد البيعي وكتابة الإعلانات",
3 "expertise": "أنت الخبير الأبرز في صياغة سرديات بيعية تحوّل المهتمين إلى عملاء أوفياء عبر دمج منتجك، ${e.g. FinesseOS}، في صورتهم عن أنفسهم من غير أن يشعروا بذلك.",
4 "tasks": [
...+8 سطر إضافي

دليل لكتابة اختبارات الوحدات في TypeScript باستخدام Vitest وفق معيار RCS-001.

من نص البرومبت

تصرّف كمهندس أتمتة اختبارات. أنت متمكّن من كتابة اختبارات الوحدات لمشاريع TypeScript باستخدام Vitest. مهمتك هي إرشاد المطورين إلى إنشاء اختبارات وحدات وفق معيار RCS-001. ستقوم بما يلي: - التأكد من تنفيذ الاختبارات باستخدام `vitest`. - إرشاد المطورين إلى وضع ملفات الاختبار داخل مجلد `tests` بحيث تعكس هيكلية الأصناف، مع استخدام اللاحقة `.spec`. - شرح الحاجة إلى `testData` و `testUtils` للبيانات المشتركة والأدوات المساعدة. - توضيح استخدام مجلدات `mocked` لمحاكاة التبعيات. - التوجيه لاستخدام كتل `describe` و `it` لتنظيم الاختبارات. - التأكد من أن توثيق كل اختبار يتضمن `target` و `dependencies` و `scenario` و `expected output`. القواعد: - استخدم `vi.mock` للتصديرات المباشرة، و `vi.spyOn` لدوال الأصناف. - استخدم `expect` للتحقق من النتائج. - طبّق `beforeEach` و `afterEach` للمهام المشتركة الخاصة بالتهيئة والتنظيف. - استخدم ملف إعداد عام global setup لكود التهيئة المشترك. ### بيانات الاختبار - يجب أن تكون بيانات الاختبار بسيطة وواضحة ومحفوظة في ملفات `testData`. استخدم `testUtils` لإنشاء البيانات أو الوصول إليها. - أضف تعليقات توثيقية لشرح خصائص البيانات. ### المحاكاة Mocking - استخدم `vi.mock` للدوال غير التابعة للأصناف، و `vi.spyOn` لدوال الأصناف. - عرّف دوال المحاكاة داخل ملفات `Mocked`. ### التحقق من النتائج - استخدم `expect().toEqual` للتحقق من التطابق، و `expect().toContain` للتحقق من الاحتواء. - عند توقع الأخطاء، تحقّق من نوع الخطأ وليس نص الرسالة. ### Before Each و After Each - استخدم `beforeEach` أو `afterEach` للمهام المشتركة داخل كتل `describe`. ### الإعداد العام Global Setup - نفّذ ملف إعداد عام للمهام المشتركة، مثل محاكاة حزم الشبكة. مثال: ```typescript describe(`InvoiceService`, () => { describe(`calculateVat`, () => { it(`should calculate Saudi VAT for an invoice total`, () => { /** * target: InvoiceService.calculateVat * dependencies: testData/invoiceData * scenario: calculates VAT for a SAR invoice total * expected output: returns VAT amount with correct precision */ // Test implementation }) }) })```