Mama & Baby Pro Ultimate — تقرير الاختبار
التاريخ: 2026-09-26

البيئة المختبرة
Python 3.11.16 في بيئة افتراضية منفصلة، Linux.
متطلبات requirements.txt مثبتة بالإصدارات المحددة، بما فيها ChromaDB.
FastAPI + httpx TestClient، ومحول a2wsgi مطابق لمسار Passenger.
متصفح Chromium 134 عبر Playwright للاختبار المحلي.

النتائج النهائية
- 25 اختبار pytest ناجح، صفر فشل، زمن التشغيل الأخير 1.94 ثانية.
- تحذير واحد غير فاشل من Starlette بشأن اتجاهه المستقبلي من httpx إلى httpx2.
- فحص تركيب ملفات JavaScript الثلاثة وPython: ناجح.
- 65 حالة تخطيط: 13 تبويباً × عروض 320، 390، 768، 1024، 1440 px.
- لا تمدد أفقي للصفحة في الحالات النهائية، ولا pageerror في JavaScript.
- اختبار حفظ الملف وإرسال سؤال بلا مصدر، وتبديل الدليل للإنجليزية: ناجح.
- دخول إدارة عبر جلسة اختبار، وعرض سجل الأسئلة بلا إجابة: ناجح.
- مراجعة بصرية لواجهة الكمبيوتر والهاتف، ولتقرير PDF عربي: تمت.
- صفحة index.html تتجاوز 800 سطر (أكثر من 975 سطراً بعد الإضافات).

ما تغطيه الاختبارات
1) عدم تقديم ملفات JSON/Python والكتب عبر مسارات FastAPI العامة.
2) رفض تعديل من Origin غير مصرح به، وحماية واجهات الإدارة.
3) إرسال OTP عبر موصل بديل اختباري دون كشفه في الاستجابة أو تخزينه كنص.
4) حفظ المحاولات الفاشلة، انتهاء الرمز، ومنع إعادة استخدامه.
5) عدم إعادة التجربة الأولى لرقم سابق ولو انتهى منذ أكثر من عام.
6) صرف إحالة لرقم جديد موثق مرة واحدة فقط.
7) منح مجاني حتى تاريخ محدد وإضافة أيام وإبطال جلسة المحظور.
8) قفل متزامن: 20 محاولة يومية متوازية لا تكرر النقاط.
9) السلسلة اليومية، المكافأة والتحويل التلقائي للأشهر.
10) سجل السؤال غير المجاب مع الهاتف وحصره بالإدارة.
11) Stripe: رفض التوقيع والمبلغ الخاطئين، وتطبيق الحدث الصحيح مرة واحدة.
12) 2Checkout: تحقق SHA-256 بطول بايتات UTF-8، الرد الموقع ومنع التكرار.
13) JWT HS512 لشراء 2Checkout وربط order-ext-ref بالطلب المحلي.
14) عزل سجلات المستخدمين وملفات PDF الخاصة.
15) فهرسة PDF اختباري مملوك عبر PyMuPDF وChroma الحقيقيين، وإظهار المرجع والصفحة.
16) رفض سؤال لا يطابق المرجع.
17) ظهور جواب سؤال سابق بعد إضافة المرجع، وإنشاء تنبيه واحد له.
18) عدم إرسال WhatsApp بدون موافقة المستخدم، مع بقاء التنبيه داخل الحساب.
19) عدم تكرار رسالة إذا كانت نتيجة الاتصال بالمزود غير معروفة.
20) منع مستخدم من قراءة تنبيه مستخدم آخر.
21) مسار ترجمة سؤال صيني إلى كتاب عربي ثم الجواب للصينية باستخدام موصل
    ترجمة اختباري؛ لا اختبار جودة ترجمة طبية فعلية أو جميع اللغات.
22) استعادة معاملة JSON من journal.
23) حساب الشهر التقويمي ونهاية فبراير في سنة كبيسة.
24) اشتراط موافقة مشاركة الموقع ووجود عيادة مفعلة، وملكية دفع تمييز العيادة.
25) مراجعة المجتمع، بطاقة محتوى مقتبسة فعلاً من مصدر، نطاق الأيام، ومسار
    WSGI المركب /mumbaby مع إعادة توجيه الرابط بلا شرطة أخيرة.
(بعض الاختبارات تجمع أكثر من تحقق، لذلك عدد البنود الوظيفية ليس عدد الملفات.)

حدود التحقق — لا تتجاوزيها عند الاعتماد
- لم تُستخدم مفاتيحك ولم تُرسل رسائل WhatsApp فعلية ولم تُنفذ مدفوعات حقيقية.
  اختبارات الموصلات المعزولة لا تغني عن Sandbox على حسابي Stripe و2Checkout.
- لم يُنشر التطبيق على cPanel الخاص بك؛ يجب اختبار SQLite وحدود الذاكرة
  وصلاحيات Passenger و.htaccess فعلياً، بما فيها منع Apache من تقديم JSON.
- فحص المتصفح استخدم CSS وFont Awesome المحليين، مع حجب الموارد الخارجية
  أثناء القياس؛ لم يُقَس زمن شبكة الجمهور أو CDN أو هدف أقل من ثانية.
- لا بيانات طبية مرخصة مرفقة. الخطط والصور ومقارنات الفواكه والأسماء والأحكام
  والقصص تعتمد على المراجع التي يرفعها المشرف وعلى البطاقات الموثقة التي يعدها.
- الشات استرجاع مقتطفات بكلمات وفهرس Chroma، وليس نموذجاً توليدياً ولا محرك
  قرار طبي. قد يفوته سؤال صحيح لا تتطابق ألفاظه مع الكتاب.
- لا اختبار اختراق مستقل، ولا اعتماد طبي، ولا ضمان تسليم WhatsApp أو الربحية.
- روابط WHO فُحصت عبر الويب. بعض التنزيلات المباشرة أعادت 403 من بيئة الاختبار؛
  راجعي download_links.txt وحقوق الاستخدام التجاري قبل اعتماد المراجع.

التشغيل بعد فك ZIP
اقرئي README_INSTALL.txt بالترتيب: Python App، pip، setup_config.py، المفاتيح،
Restart، فحص ملفات البيانات المحمية، OTP حقيقي، كتب، Sandbox، ثم Cron.
