متى تستخدمه
استخدم حقلاً عادياً عندما يحتاج التقديم إلى قيمة واحدة: اسم مختصر، تاريخ، مبلغ، ملف، اختيار، موقع، أو سجل مختار. استخدم مكرر الحقل عندما يمكن أن تتكرر القيمة الفردية نفسها عدة مرات ولا تحتاج كل مرة إلى مجموعة مدخلات مرتبطة. من الأمثلة عدة أرقام مرفقات، أو عدة وسائل اتصال، أو عدة أسماء قصيرة للمواد. استخدم مكرر القسم عندما تحتوي كل خانة مكررة على قيم متعددة يجب أن تبقى معاً. فقد يحتاج صف المعاينة إلى موقع الزيارة وتاريخها ونتيجتها وملاحظاتها وملفاتها، وقد يحتاج صف المواد إلى نوع المادة والكمية والوحدة والملف الداعم. وضع هذه القيم في قسم مكرر يسمح للمراجع برؤية حدود المعاينة الأولى والثانية بوضوح، بدلاً من محاولة جمعها من قوائم مستقلة. لا تجعل الحقل متكرراً لأن القيمة قد تكون طويلة؛ استخدم حقل نص متعدد الأسطر أو نصاً منسقاً للسرد الواحد الطويل. ولا تستخدم المكرر كقناة استيراد غير محدودة للبيانات، ولا تجمع أسئلة غير مترابطة في قسم مكرر لمجرد اختصار الصفحة. ينبغي لمالك الخدمة أن يستطيع وصف ما يمثله صف واحد، ومن يحق له إضافته، وعدد الصفوف المعقول. اختر حقلاً عادياً بدلاً من القيمة المحسوبة عندما يجب على شخص إدخال القيمة أو تصحيحها. الحقل من النوعcalculated_value قيمة مشتقة يضبطها المنشئ: يفرض عليه النظام أن يكون مخفياً وغير مطلوب وغير قابل للتحرير وغير قابل للتكرار. لذلك ليس مربع إجابة قابل للتحرير. استخدم حقل كيان محسوباً عندما تنتمي النتيجة إلى سجل الكيان بعد جلسة النموذج؛ راجع الحقول المحسوبة لهذه الإمكانية المنفصلة.
الإعداد
اختيار أصغر نوع حقل صحيح
تتضمن أداة إنشاء النموذج أنواع الحقول التالية في وقت التشغيل. ابدأ بالنوع الذي يطابق القيمة المحفوظة، وأضف وصفاً عندما يحتمل أن يفسر المستخدم السؤال بأكثر من معنى.أمثلة كل حقل ولقطات أداة الإنشاء
تظهر اللقطات الفعلية الآتية النوع المختار من قائمة أنواع الحقول. استخدم المفتاح الثابت في الأمثلة؛ فالعنوان المترجم مخصص للبشر، بينما المفتاح هو ما تقرأه الشروط والقيم الافتراضية.نص
استخدمapplicant_name لاسم أو مرجع قصير يدخله مقدم الطلب أو الموظف مرة واحدة. يمكن لقاعدة تحقق أن تطلب طولاً ذا معنى، لكنها لا ينبغي أن تحاول استنتاج رقم هوية من الاسم الحر.
رقم
استخدمhousehold_members لعدد ذي وحدة محددة. اضبط التحقق كعدد صحيح موجب عندما لا يمكن للخدمة الاستمرار بصفر؛ واستخدم المبلغ عندما تمثل القيمة عملة.
تاريخ
استخدمrequested_visit_date عندما يحتاج الطلب إلى يوم من دون ساعة محددة. ويمكن لموعد لاحق أن يستخدم تاريخاً ووقتاً منفصلين لتمييز اليوم المطلوب عن الوقت المؤكد.
تاريخ ووقت
استخدمappointment_time لموعد معاينة أو خدمة مؤكد. اذكر منطقة زمن المكتب في الوصف عندما تعمل فرق مركزية ومحلية في مواقع مختلفة.
وقت
استخدمpreferred_contact_time لتفضيل متكرر لوقت اليوم. لا تجعله المدخل الوحيد للموعد لأنه لا يحمل تاريخاً تقويمياً.
منطقي
استخدمrequires_site_visit لقرار واحد لا لبس فيه. يمكن لقسم تابع أن يستخدم الشرط $.requires_site_visit.value == true عندما تكون القيمة المنطقية ذات بداية موثقة وقد اختبر كل مسار.
مبلغ
استخدمestimated_service_fee لمبلغ يدخله شخص أو يراجعه. أبق سياسة الرسم وسلطة الاعتماد والعملة في إعداد الخدمة والنص المساعد لا في إجابة نصية حرة.
نص متعدد الأسطر
استخدمservice_details لشرح عادي متعدد الأسطر بكلمات مقدم الطلب. افصل الوقائع العملية مثل العنوان والفئة والتاريخ المطلوب إلى حقول مستقلة كي تبقى قابلة للبحث والمراجعة.
نص منسق
استخدمreview_narrative لسرد يحرره الموظف ويحتاج فعلاً إلى عناوين أو قوائم. لا تعتمد على التنسيق لتمثيل قرار أو حالة أو مالك أو مبلغ مضبوط.
اختيار مفرد
استخدمservice_category بقيم ثابتة مثل civil_registration وmunicipal_service وsite_inspection. تقارن الشروط القيمة المخزنة مثل $.service_category.value == "site_inspection"، لا عنوان الخيار المترجم.
اختيار كيان
استخدمassigned_case في مسار الموظفين فقط حيث يعرف الكيان المصدر والمرشح المعتمدان. تحقق من سلوك البحث على مستوى المنظمة ولا تعرض محدد سجلات داخلياً قابلاً للتصفح في نموذج مواطن عام.
اختيار جلسة نموذج
استخدمrelated_application عندما يجب على المراجع ربط النموذج بجلسة التقطت سابقاً. قيد النموذج المصدر واختبر غياب النتائج والبحث وحالة الجلسة المختارة قبل النشر.
ملف
استخدمsupporting_evidence لمستند أو صورة تتبع قاعدة دليل واحدة. فعّل متعدد فقط عندما يكون لكل ملف الغرض والسياسة نفسيهما؛ وإلا ضع الملف وبياناته في قسم مكرر.
موقع
استخدمservice_location عندما يؤثر العنوان أو موضع الخريطة في التقديم أو التوجيه أو المعاينة. اشرح الدقة التي تحتاجها الخدمة ولا تطلب إحداثيات عندما تكفي منطقة أو مركز خدمة.
قيمة محسوبة
استخدمvisit_readiness_score لقيمة يشتقها النموذج ولا يدخلها شخص. تكون مخفية وغير مطلوبة وغير قابلة للتحرير أو التكرار عمداً؛ فاستخدم تعبيراً قصيراً يمكن اختباره مع كل مسار إدخال.
بالنسبة إلى معظم الأنواع، يستطيع المنشئ حفظ قيمة افتراضية وتقييمها كتعبير. تبدأ القيم المنطقية بـ false ما لم تضبط خلاف ذلك، بينما تحفظ القيم النصية والتواريخ بحسب نوعها. القيمة الافتراضية نقطة بداية وليست دليلاً على أن المستخدم راجعها. وعندما يكون التأكيد مهماً، استخدم قيمة منطقية واضحة أو شرط إجراء، ثم اختبر المسار الناتج.
ضبط حقلي الاختيار والملف عن قصد
لحقل الاختيار قراران مستقلان: نمط الاختيار ومصدر الخيارات. اختر مفرد عندما تقبل الخدمة قيمة خيار مخزنة واحدة، مثل فئة طلب واحدة. واختر متعدد عندما تقبل الخدمة مجموعة قيم مخزنة، مثل عدة احتياجات خدمة؛ إذ يحفظ وقت التشغيل النتيجة كمصفوفة نصوص. اختبر عدم الاختيار والاختيار الواحد والاختيارات المتعددة للحقل المتعدد. واختبر كل شرط يستهلك قيمة متعددة مع شكل المصفوفة المحفوظة، لا على افتراض أنها نص واحد. اختر مصدر خيارات يبقى مفهوماً بعد ترجمة عنوان أو تعديله. تحمل الخيارات اليدوية عناوين محلية وقيمًا مخزنة ثابتة. وتتاح الخيارات المأخوذة من كيان فقط عندما تفعل هذه الإمكانية وتقرأ الخيارات المضبوطة من حقل الكيان المختار. أما خيارات الشيفرة فيجب أن تحل إلى مصفوفة، ويمكن أن تكون نصوصاً أو كائنات تقدم قيمة وعنواناً. أياً كان المصدر، لا تجعل شرطاً لاحقاً يعتمد على عنوان عرض. سجل قيم الخيارات المخزنة واختبرها، ولا سيما قبل إعادة تسمية خيار أو حذفه أو دمجه. يحمل حقل الملف أيضاً مفتاح متعدد مدمجاً. استخدم حقل ملفات متعدد واحداً عندما تحمل كل الملفات المرفوعة الغرض نفسه وأنواع القبول والحجم والمعاملة نفسها في المراجعة، مثل عدة صفحات من الدليل الداعم نفسه. واستخدم قسماً مكرراً عندما يحتاج كل مرفق إلى بيانات مستقلة مثل فئة المستند أو تاريخ الإصدار أو المصدر أو نتيجة المراجع أو قاعدة تحقق مختلفة. يبقي حقل الملفات المتعددة الرفع المتجانس بسيطاً، بينما يمنح المكرر كل عنصر صفاً خاضعاً للمساءلة.اضبط وصول المحددات إلى البيانات عمداً
محدد الكيان عملية بحث عن بيانات، وليس مجرد قائمة اختيار مريحة. مستوى الوصول الافتراضي لمحدد الكيان هوall، ولذلك تُقرأ خياراته عبر مسار بيانات على مستوى النظام في المنظمة. استخدم user_permissions فقط عندما يعمل النموذج لعضو محدد وتحتاج الخدمة فعلاً إلى أن يحترم المحدد وصول ذلك العضو العادي إلى السجلات. اختبر العضو والدور والنطاق الفعليين، وحالة عدم وجود نتائج، وحالة قيمة مختارة، وحالة البحث. يمكن لمرشح الكيان أن يبقي القائمة مركزة — مثل قصرها على حالات المعاينة المفتوحة في المنطقة الحالية — لكنه لا يحول بحثاً على مستوى النظام إلى حد تفويض.
محدد جلسة النموذج أشد حساسية من ناحية التصميم: تستخدم خياراته وجلب السجل المختار مسار بيانات على مستوى النظام في المنظمة. ولا يقدم وضعاً لصلاحيات المشارك. قيد النموذج المصدر، وأبق أي مرشح ضيقاً، واستخدمه فقط عندما يوافق مالك الخدمة على ظهور كل جلسة قابلة للاختيار. لا تستخدم أياً من المحددين لعرض خيارات في نموذج عام أو مسار مشارك غير مراجع أو خدمة حساسة لمجرد أن المرشح ينتج قائمة قصيرة. استخدم بحثاً عاماً مصمماً لهذا الغرض أو حدّاً معتمداً على الخادم عندما يجب أن يرى المستخدم سجلات مخولاً مستقلاً للوصول إليها فقط.
إذا احتاج استقبال طلب خدمة مواطن إلى أن يربط الموظف حالة معاينة داخلية، فلا تضع المحدد في نسخة الاستقبال العامة. ضعه في نسخة المراجعة الخاصة بالأعضاء، واضبط أصغر كيان/مرشح معتمد، ثم اختبره مع مراجع يملك النطاق المقصود. وإذا احتاج النموذج العام إلى أن يذكر المواطن حالة، فاجمع مرجعاً مضبوطاً وحله فقط عبر إجراء خدمة معتمد؛ لا تعرض محدد سجلات قابل للتصفح.
لكل إدخال أيضاً أربعة قرارات للسلوك يمكن ضبطها كمفتاح بسيط أو كتعبير يتحقق منه المنشئ في سياقه:
يتحقق المنشئ من هذه التعبيرات في السياق المتاح. اجعل الشرط محدوداً، واذكر الحقل المؤثر في العنوان أو المساعدة عندما يغير ما يراه المواطن. المثال الآتي للتوضيح؛ فهو يظهر قسم المعاينة عندما يكون المفتاح الفعلي
requires_site_visit صحيحاً:
multi_site، وصفاً واحداً في غير ذلك. تحقق من قيمة الخيار المنشورة، ولا تنسخ عنوان الخيار المعروض إلى التعبير.
بناء حقل أو قسم متكرر
افتح إعدادات الحقل أو القسم وفعل التكرار. امنح المكرر عنواناً واضحاً، ثم اختر واحداً من الأنماط الثلاثة. تقبل إعدادات العدد والحد الأدنى والحد الأقصى وعناصر الحلقة قيمة ثابتة أو تعبيراً يحل في سياق المكرر. أما العدد الأولي فيجب أن يكون رقماً ثابتاً: فوقت التشغيل الحالي يحوله بواسطةNumber(...) ولا يقيمه كتعبير، لذلك لا تضع JEXL في هذا الإعداد. وبالنسبة إلى الصفوف التي يتحكم بها المستخدم، ضع حداً أقصى صريحاً تملكه الخدمة بدلاً من الاعتماد على القيمة الاحتياطية 9999 عند غياب الحد.
تجمع الأداة نمط الصف وحدوده في موضع واحد. يبين هذا الضبط الفعلي لقسم جدولي نمط تحكم المستخدم لصف واحد إلى ثلاثة صفوف معاينة.
لمجموعة صفوف ثابتة، تستبدل اللوحة الحدود بعدد واحد. يناسب ذلك فحصي مواد إلزاميين بالضبط، لا عدداً متغيراً من المعاينات.
استخدم مكرر الحقل لقيمة متكررة واحدة. واستخدم مكرر القسم عندما يحتوي كل صف على مجموعة حقول أو كتل نص أو إجراءات. تتوافر ضوابط التكرار نفسها، لكن القسم يحافظ على قيم أبنائه داخل الصف نفسه. ولا يستطيع حقل داخل قسم بتخطيط جدولي أن يبقى مكرراً مستقلاً؛ نمذج الصفوف على مستوى القسم بدلاً من ذلك.
في نمط الحلقة، يجب أن يعيد تعبير عناصر الحلقة المصفوفة التي تقود الصفوف. يفترض المثال الآتي للتوضيح أن حقلاً سابقاً يخزن مصفوفة تحت المفتاح approved_materials. يرتبط كل صف بالمادة في تلك المصفوفة بدلاً من اختيار عدد يدوي للصفوف.
عند الحفظ، تحفظ المكررات كمصفوفة من قيم المثيلات. كما يظهر للمستخدم في الجلسة عدد requestedRepeat ومجموعة instances. أما الصفوف المقادة بالحلقة فيكتب وقت التشغيل عنصر المصدر تحت المفتاح @loop_item في كل مثيل محفوظ إلى جانب قيم ذلك الصف. اعتبر قيمة المصدر هذه أثراً للمادة التي أنشأت الصف، لا حقلاً يدخله المستخدم أو يعدله يدوياً.
قراءة قيم المكرر وعرضها وتصديرها
يوجد شكلان مترابطان يجب فهمهما. أثناء تشغيل النموذج، يكون الحقل العادي كائن حقل مكشوف، ولذلك تقرأ إجابته عبر.value. والمكرر نفسه كائن مكشوف أيضاً: استخدم مجموعة .instances، ثم استخدم .value للحقل المكرر أو .children.<field_key>.value لابن داخل قسم مكرر. لا يغير التخطيط الجدولي طريقة العرض، لا شكل القيمة المحفوظة.
استخدم مكرر حقل باسم attachment_references عندما يحتاج التقديم إلى عدة قيم من النوع نفسه تماماً. اقرأ صفاً معروفاً بفهرسه الصفري:
EVD-001, EVD-002.
inspection_rows عندما يحمل كل صف إجابات مترابطة. اقرأ حقلاً من أول معاينة كما يأتي:
.value كذلك.
saved_state قيم العمل كمصفوفات وكائنات مباشرة؛ ولا يخزن المغلفات الخاصة بوقت التشغيل .instances أو .children. يحفظ مكرر الحقل مصفوفة بسيطة، بينما يحفظ مكرر القسم أو الجدول كائناً واحداً لكل صف. ويحتفظ الصف المقاد بالحلقة أيضاً بعنصر مصدره تحت @loop_item كي يستطيع المراجع تتبع كيفية إنشاء الصف.
.instances و.children و.value فتستخدم فقط داخل سياق تعبير النموذج الحي. وإذا احتاجت عملية لاحقة إلى قائمة جاهزة للعرض، فاستخدم تحويل getByPath("path") المسجل عمداً بدلاً من تسطيح البيانات المقدمة وفقدان حدود الصفوف.
التخطيط الجدولي والصفوف المتداخلة
يمكن للقسم المتكرر أن يستخدم تخطيطsection أو تخطيط table. يعطي تخطيط القسم كل مثيل كتلة مستقلة، وهو أسهل للسرد الطويل أو الملفات أو المحتوى الشرطي. يعرض تخطيط الجدول الحقول والإجراءات وكتل النص الأبناء كأعمدة، وهو أنسب للصفوف المقارنة الصغيرة مثل المادة والكمية والوحدة ونتيجة التحقق.
تتيح إعدادات القسم الجدولي اختيار سلوك الهاتف إلى جانب ضبط الصفوف. أضف خلايا قصيرة فقط كأعمدة؛ أما الدليل والسرد الطويلان فيبقيان أسهل للمراجعة في تخطيط قسم عادي.
في القسم الجدولي اختر سلوك الهاتف عمداً. النمط hybrid هو الافتراضي ويعرض الصفوف كبطاقات مدمجة متجاوبة على الشاشات الصغيرة. أما scroll فيبقي شكل الجدول ويتيح تمريراً أفقياً. اختبر النمطين بعناوين وقيم ممثلة. فالجدول الذي يحوي سرداً طويلاً أو تفاصيل ملف أو ضوابط شرطية كثيرة يبقى أوضح غالباً كتخطيط قسم عادي.
يمكن أن توجد مكررات متداخلة في بنية النموذج، لكن يجب أن تكون نادرة. يضاعف كل صف خارجي عدد الضوابط والقيم المحفوظة تحته، فيصعب الاستعراض على الهاتف والتحقق والتصحيح. ضع حداً صريحاً على كل مستوى يتحكم به المستخدم، وأبق العمق ضحلاً، واستعمل نموذجاً أو كياناً مرتبطاً عندما تكون للبيانات دورة حياة مستقلة.
مثال عملي
تتلقى مديرية خدمات عامة سورية طلبات لخدمة محلية. يسجل موظف الاستقبال فئة الخدمة، ثم يسجل المعاينات الميدانية عند الحاجة. يريد مالك الخدمة أن يقارن الموظفون نتائج المعاينات بسرعة، مع بقاء كل ملاحظة وملف وموقع تابعاً للزيارة التي تخصه. أنشئ أولاً الحقول غير المتكررة:request_type كحقل اختيار، وrequires_site_visit كحقل منطقي، وcitizen_contact_reference كنص، وrequested_service_date كتاريخ. استخدم قيم اختيار مضبوطة لـ request_type لأن الشروط اللاحقة تعتمد عليها. أضف قسماً اسمه inspection_rows بعنوان واضح مثل «المعاينات الميدانية». واجعل شرط ظهوره هو التعبير الأول في هذا الدليل. ضع داخله visit_date كتاريخ، وvisit_location كموقع، وinspection_outcome كاختيار، وinspection_notes كنص متعدد الأسطر، وevidence_file كملف. إذا كانت ملفات كل معاينة تتبع القاعدة نفسها، فعّل متعدد في evidence_file؛ وإذا كان على الموظف تصنيف كل ملف أو تقييمه بصورة مستقلة فأضف قسم أدلة مكرراً محدوداً مع بيانات الملف الوصفية.
اختر userControlled للقسم inspection_rows. ضع حداً أدنى معتمداً مقداره 1 فقط عندما تكون الزيارة مطلوبة دائماً، وعدداً أولياً 1 ليظهر الصف الأول المتوقع، وحداً أقصى متواضعاً مثل 3 عندما تسمح السياسة بثلاث زيارات مسجلة كحد أقصى لكل طلب. يستطيع المستخدم إضافة الزيارة الثانية أو الثالثة ضمن هذا النطاق فقط. لا تستخدم العدد الثابت عندما يختلف عدد الزيارات، ولا نمط الحلقة عندما يجب أن يقرر الموظف الحاجة إلى زيارة إضافية.
أنشئ قسماً ثانياً باسم material_rows للتحقق من المواد. إذا كان يجب دائماً عرض فحصين مطلوبين للمواد، استخدم fixedCount بالعدد 2. وإذا استلم المكتب مصفوفة معتمدة مسبقاً لمتطلبات المواد، استخدم loop واجعل repeatable_loop_items يشير إلى تلك المصفوفة. اشرح في عنوان صف الحلقة أنه مشتق من قائمة المواد المعتمدة؛ فالقيمة المحفوظة @loop_item تجعل العلاقة قابلة للمراجعة بعد الحفظ.
استخدم التخطيط الجدولي لـ material_rows فقط إذا كانت أبناؤه قصيرة: نوع المادة والكمية والوحدة وحالة التحقق. اختر سلوك الهاتف hybrid أولاً واختبره في شاشة ضيقة. وأبق inspection_rows كتخطيط قسم لأن الملاحظات وملفات الأدلة تحتاج إلى مساحة وسياق.
قبل النشر، اطلب من مراجع إرسال طلب اختبار بمعاينة واحدة وآخر بمعاينتين. راجع بيانات الجلسة المحفوظة صفاً صفاً: يجب أن تبقى تاريخ وموقع ونتيجة وملاحظات وملف المعاينة الأولى معاً في المثيل الأول، وأن تكون قيم المعاينة الثانية في المثيل الثاني. ثم اختبر حد السياسة بمحاولة إضافة زيارة رابعة. الحد الواضح أكثر أماناً من نموذج يبدو أنه يقبل أدلة بلا نهاية.
الاختبار
اختبر في نموذج غير إنتاجي بقيم اختبار معروفة، لا ببيانات مواطنين حية. سجل أعداد الصفوف المتوقعة والظهور المتوقع قبل كل اختبار.
بالنسبة إلى الحد الأقصى المبني على تعبير، اختبر أصغر وأكبر قيمة متوقعة ومدخلاً مفقوداً. يفترض المثال الآتي للتوضيح أن
risk_level قيمة اختيار فعلية؛ استبدله بمفتاح الخدمة وقيم خياراتها.
استكشاف الأخطاء وإصلاحها
الأذونات وحدود جودة البيانات
يتطلب بناء النموذج وتحريره ونشره وصول التطبيق المناسب. يحصل مستخدم تعبئة النموذج على الحقول والإجراءات التي يعرضها النموذج المنشور لجلسة ذلك المستخدم فقط؛ ولا يمنح الظهور وصولاً إلى سجلات كيان أخرى. إعداد المحدد قرار منفصل للوصول إلى البيانات: مستوى الوصول الافتراضي لمحدد الكيان هوall، أما user_permissions فيجب اختياره واختباره عمداً؛ وتستخدم عمليات بحث محدد جلسة النموذج مسار بيانات على مستوى النظام في المنظمة. المرشحات والقوائم القصيرة ليست تفويضاً. لا تستخدم أياً من المحددين لعرض خيارات في نموذج عام ما لم تثبت مراجعة صريحة لوصول البيانات أن كل خيار معروض مناسب لذلك المشارك.
تأتي جودة البيانات من أنواع حقول واضحة وشروط محدودة وقيم اختيار مضبوطة وقواعد تحقق مراجعَة وحدود صريحة للمكررات. لا تعتمد على حقل مخفي كمخزن سري: فالظهور شرط عرض وليس بديلاً عن التحكم بالوصول أو سياسة الاحتفاظ بالبيانات. تجنب وضع رقم وطني أو بيانات اتصال أو دليل خاص داخل تعبير أو عنوان خيار أو عنوان مكرر. اجمع ما تحتاجه الخدمة فقط، واشرح سبب طلب الملف أو الموقع، واتبع مسار احتفاظ ومراجعة معتمداً للملفات.
عندما يمثل القسم المكرر وحدة واقعية خاضعة للمساءلة، احتفظ بسياق يكفي لمراجعته: عنوان الصف والتاريخ والدور المسؤول عند وجوده والنتيجة المضبوطة وسياسة الدليل الداعم. قيمة النموذج المختصر مهمة، لكن يجب أن يستطيع مراجع لاحق فهم من قدم كل صف وما معناه.
أدلة ذات صلة
- خطط تسلسل الالتقاط والنشر الكامل في النماذج.
- اضبط الإجراءات الشرطية وبوابات الإكمال وأدلة التوقيع في إجراءات النماذج ومنطقها وتواقيعها.
- تعلّم صياغة التعبيرات المستخدمة في الشروط والقيم الافتراضية في صياغة لغة التعبيرات.
- راجع الجلسات المحفوظة والعمل اللاحق في إرسالات النماذج.

