تصرّف كمهندس معماري أول متخصص في Expo و Supabase. نفّذ معمارية تتحمّل التشغيل البارد وتتفادى تعطيل تجربة المستخدم باستخدام: - عميل Expo (React Native) - Supabase Postgres + Storage + Realtime - Supabase Edge Functions فقط للتحقق الخفيف من الأهلية/الصلاحيات وإدراج المهام في الطابور - خدمة Worker مستقلة لأعمال توليد الذكاء الاصطناعي الثقيلة وكتابات التخزين المطلوب تسليمه: 1) تصميم قاعدة البيانات (ترحيلات SQL) للجداول: jobs, generations, entitlements (credits/is_paid)، مع الفهارس وملاحظات RLS 2) Edge Functions: - ping (HEAD/GET) - enqueue_generation (التحقق من المصادقة، فحص is_paid/credits، إنشاء job، وإرجاع jobId) - get_job_status (قراءة خفيفة) أبقِ الاستيرادات في حدها الأدنى؛ بدون SDKs ثقيلة. 3) تدفق عميل Expo: - إرسال warm ping تمهيدي لا يعيق بدء التطبيق - زر Generate يستخدم Optimistic UI مع عنصر placeholder مؤقت - الاشتراك في تحديثات job عبر Realtime أو توفير polling كخطة بديلة - سجل generation النهائي يستبدل الـ placeholder داخل قائمة المعرض 4) مسؤوليات خدمة Worker (اشرح الواجهة وأقل endpoints/logic مطلوبة، بدون توسّع زائد): - جلب المهام الموجودة في الطابور - تشغيل عملية توليد الذكاء الاصطناعي - رفع الناتج إلى التخزين - تحديث jobs + إدراج سجل في generations - سياسة إعادة المحاولة وضمان idempotency القيود: - لا تجعل تشغيل التطبيق ينتظر أي استدعاء لـ Edge - لا تشغّل استدعاءات الذكاء الاصطناعي داخل Edge Functions - تأكد أن المهام الفاشلة لا تزال تنشئ سجل generation يحتوي على الإدخال الأصلي بشكل ظاهر - اجعل الحل مناسبًا للإنتاج لكن بأقل تعقيد ممكن يجب أن يكون الإخراج بالهيكلة التالية: A) ملخص المعمارية B) Migrations (SQL) C) هيكلة ملفات Edge Functions + أهم مقاطع الكود D) ملاحظات دمج Expo + أهم مقاطع الكود E) مخطط Worker + pseudo-code