تحويلها الى قواعد البيانات كاملة مع العلاقات # نظام Twist Taste – النسخة الاحترافية المتكاملة ## 🎯 لوحة التحكم الرئيسية المعززة ### قسم التقارير المتقدمة الجديد “` ┌─────────────────────────────────────────────────────────────┐ │ نظام إدارة Twist Taste │ │ النسخة المتقدمة │ ├─────────────────┬─────────────────┬─────────────────┬──────┤ │ 📊 المبيعات │ ⏰ الزمن │ 💎 الولاء │ 📱 واتساب │ └─────────────────┴─────────────────┴─────────────────┴──────┘ “` ## 📊 وحدة التحليل الزمني المتكاملة مع النظام ### 1. لوحة التحكم الزمنية الذكية **مؤشرات الأداء في الوقت الفعلي:** “`javascript const realTimeKPIs = { المبيعات_الحالية: “٠٣:٤٣ ص | 0.00 ر.س”, الطلبات_اليوم: “0 طلبات”, قيد_التنفيذ: “–“, ذروة_الطلبات: { الوقت: “١٣:٠٠ – ١٤:٠٠”, عدد: “١٥ طلب”, قيمة: “٦٧٥ ر.س” } }; “` ### 2. تحليل المبيعات حسب الوقت **توزيع الطلبات بالساعة:** “` ┌─────────────────────────────────────────────────────┐ │ تحليل المبيعات الزمني – اليوم │ ├──────┬──────┬──────┬──────┬──────┬──────┬──────┬───┤ │ ١٠-١١│ ١١-١٢│ ١٢-١٣│ ١٣-١٤│ ١٤-١٥│ ١٥-١٦│ ١٦-١٧│…│ ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼───┤ │ ٣ │ ٨ │ ١٢ │ ١٥ │ ١١ │ ٧ │ ٤ │ │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┴───┘ “` ## 🍽️ تحليل المنتجات مع البعد الزمني ### تقارير المنتجات المتقدمة **تصنيف المنتجات حسب الوقت والأداء:** “`python # تحليل المنتجات حسب الوقت def analyze_products_by_time(): المنتجات_المميزة = [ { “اسم”: “🍤 شوربة جمبري شعبي”, “سعر”: “27 ر.س”, “مبيعات_اليوم”: 23, “ذروة_الوقت”: “13:00-14:00”, “متوسط_التحضير”: “8 دقائق” }, { “اسم”: “كباب لحم تويست شعبي”, “سعر”: “36 ر.س”, “مبيعات_اليوم”: 18, “ذروة_الوقت”: “12:00-13:00”, “معدل_العودة”: “45%” } ] return المنتجات_المميزة “` ### تحليل الفئات الزمني **أداء القوائم حسب الوقت:** “` الفئة وقت الذروة متوسط القيمة معدل الطلب ───────────────────────────────────────────────────────── المشويات ١٢:٠٠-١٤:٠٠ ٤٥ ر.س ٢٥٪ الباستا ١٣:٠٠-١٥:٠٠ ٤٠ ر.س ١٨٪ المقبلات ١١:٠٠-١٣:٠٠ ٢٢ ر.س ١٥٪ البوكسات ١٢:٠٠-١٤:٠٠ ٣٩ ر.س ١٢٪ “` ## 💎 نظام الولاء المتكامل مع المبيعات ### تحليل العملاء المتقدم **تصنيف العملاء بناءً على السلوك:** “`sql — تقسيم العملاء بناءً على سلوك الطلب SELECT العميل_الرقم, COUNT(*) AS عدد_الطلبات, SUM(القيمة) AS إجمالي_الإنفاق, CASE WHEN COUNT(*) >= 10 THEN ‘VIP’ WHEN COUNT(*) >= 5 THEN ‘متكرر’ ELSE ‘جديد’ END AS فئة_الولاء, AVG(القيمة) AS متوسط_الطلب, DATEDIFF(NOW(), MAX(التاريخ)) AS أيام_من_آخر_طلب FROM الطلبات GROUP BY العميل_الرقم; “` ### برنامج المكافآت الزمني **مكافآت حسب توقيت الطلب:** – **ساعات السعادة**: ٢-٥ مساءً (نقاط مضاعفة) – **طلبات الصباح**: ٨-١١ صباحًا (عرض خاص) – **طلبات نهاية الأسبوع**: هدايا مجانية ## 📱 نظام واتساب المتكامل مع الطلبات ### آلية تأكيد الطلبات الذكية “`javascript // نظام التأكيد التلقائي عبر واتساب const WhatsAppOrderSystem = { تأكيد_الطلب: { فوري: “شكراً لطلبك من Twist Taste! رقم الطلب: #1234”, تحديث_الحالة: { تم_الاستلام: “✅ الطلب قيد التحضير”, قيد_التوصيل: “🚗 الطلب في الطريق إليك”, تم_التسليم: “🎉 تم التسليم! نرجو تقييم الخدمة” } }, متابعة_الجودة: { بعد_ساعة: “كيف كانت تجربتك مع طلبك؟”, بعد_يوم: “هل ترغب في طلب نفس الوجبة؟” } }; “` ### تحليل التفاعل مع العروض “` نظام العروض عبر واتساب: ──────────────────────────────── العرض معدل الاستجابة قيمة الطلب ──────────────────────────────── بوكس الغداء الكلاسيكي ٧٥٪ ٣٩ ر.س عرض المشويات ٦٨٪ ٨٥ ر.س عروض نهاية الأسبوع ٨٢٪ ١٢٠ ر.س “` ## 📈 التقارير المتكاملة ### تقرير الأداء اليومي الشامل “` 📅 تقرير أداء Twist Taste ⏰ التاريخ: 2024-01-15 ⏱️ فترة التقرير: ٠٨:٠٠ – ٢٣:٠٠ 🎯 المبيعات والإحصاءات: • إجمالي المبيعات: ٢,٤٥٠ ر.س • عدد الطلبات: ٤٨ طلب • متوسط قيمة الطلب: ٥١ ر.س • العملاء الجدد: ١٢ عميل ⏰ التحليل الزمني: • ذروة المبيعات: ١٣:٠٠-١٤:٠٠ (٣٢٪ من المبيعات) • أقل فترة: ١٦:٠٠-١٧:٠٠ (٨٪ من المبيعات) • متوسط وقت التحضير: ١٥ دقيقة 🏆 المنتجات الأكثر طلباً: 1. كباب لحم تويست – ١٨ طلب 2. شوربة جمبري – ١٥ طلب 3. بيتزا بيبروني – ١٢ طلب 💎 تحليل الولاء: • العملاء المتكررين: ٢٥ عميل (٥٢٪) • العملاء الجدد: ١٢ عميل (٢٥٪) • العملاء VIP: ١١ عميل (٢٣٪) • معدل العودة: ٦٥٪ 📱 تفاعل واتساب: • رسائل واردة: ٨٩ رسالة • معدل الرد: ٩٨٪ • متوسط وقت الرد: ٢.٣ دقيقة • طلبات عبر واتساب: ١٨ طلب 🎯 التوصيات: 1. زيادة المخزون للمنتجات الأكثر طلباً 2. عروض خاصة في الفترة الهادئة (١٦-١٧) 3. متابعة العملاء الجدد عبر واتساب “` ### تقارير القوائم الذكية **تحسين القائمة بناءً على البيانات:** “`python def optimize_menu_based_on_data(): التحسينات_المقترحة = [ { “القائمة”: “المشويات”, “الإجراء”: “إضافة خيارات أصغر حجماً”, “السبب”: “٢٥٪ من العملاء يطلبون أحجاماً أصغر”, “الوقت_المتوقع”: “الساعة ١٤:٠٠-١٦:٠٠” }, { “القائمة”: “البوكسات”, “الإجراء”: “عرض خاص للطلبات المبكرة”, “السبب”: “زيادة الطلب بين ١١:٠٠-١٢:٠٠”, “الوقت_المتوقع”: “قبل الساعة ١٢:٠٠” } ] return التحسينات_المقترحة “` ## 🔄 التكامل مع نظام Twist Taste الحالي ### 1. تكامل شاشة POS “` نظام البيع المباشر المعزز: ┌─────────────────────────────────────┐ │ Twist Taste – نظام البيع (POS) │ ├─────────────────────────────────────┤ │ الوقت الحالي: ٠٣:٤٣ ص │ │ المبيعات اليوم: 0.00 ر.س │ │ الطلبات اليوم: 0 │ │ قيد التنفيذ: — │ ├─────────────────────────────────────┤ │ [🔍] بحث سريع في المنتجات… │ │ │ │ 📊 عرض التقارير الزمنية │ │ 💎 تحليل الولاء │ │ 📱 رسائل واتساب │ │ 📈 التقارير المتقدمة │ └─────────────────────────────────────┘ “` ### 2. تحديث نظام الطلبات “`javascript // نظام طلبات ذكي مع تحليل زمني const enhancedOrderSystem = { إنشاء_طلب: { بيانات_العميل: { اسم: “محمود أحمد”, فئة_الولاء: “VIP”, آخر_طلب: “قبل ٣ أيام”, متوسط_الإنفاق: “٨٥ ر.س” }, توقيت_الطلب: { الوقت: “١٤:٣٠”, فترة_الذروة: “نعم”, وقت_التوصيل_المتوقع: “١٥:١٠” }, تحليل_السلة: { منتجات: [“كباب لحم تويست”, “شوربة جمبري”], قيمة_الطلب: “٦٣ ر.س”, تنبيهات: “إضافة سلطة تويست (يشترها ٦٠٪ مع هذا الطلب)” } } }; “` ## 🎨 واجهات المستخدم المحسنة ### شاشة التقارير المتكاملة “`html <div class=”twist-taste-dashboard”> <div class=”header”> <h1>Twist Taste – التقارير المتقدمة</h1> <div class=”time-selector”> <input type=”date” id=”start-date”> <input type=”time” id=”start-time”> <span>إلى</span> <input type=”date” id=”end-date”> <input type=”time” id=”end-time”> <button>تطبيق</button> </div> </div> <div class=”main-stats”> <div class=”stat-card” style=”background: #4CAF50;”> <h3>المبيعات الزمنية</h3> <p>٢,٤٥٠ ر.س</p> <small>+١٨٪ عن الفترة السابقة</small> </div> <div class=”stat-card” style=”background: #2196F3;”> <h3>معدل الولاء</h3> <p>٦٥٪</p> <small>٢٥ عميل متكرر</small> </div> <div class=”stat-card” style=”background: #FF9800;”> <h3>تفاعل واتساب</h3> <p>٩٨٪</p> <small>٨٩ رسالة، ٢.٣ دقيقة رد</small> </div> </div> <div class=”charts-section”> <div class=”chart”> <h4>📊 المبيعات حسب الساعة</h4> <!– رسم بياني تفاعلي –> </div> <div class=”chart”> <h4>💎 توزيع العملاء حسب الولاء</h4> <!– مخطط دائري –> </div> </div> </div> “` ## 📱 تطبيق الجوال للمتابعة ### إشعارات ذكية للموظفين “` 🔔 نظام التنبيهات الذكي: • “تحذير: انخفاض الطلبات في الساعة ١٦:٠٠” • “اقتراح: عرض خاص للفترة الهادئة” • “تنبيه: منتج شوربة جمبري قارب على النفاد” • “معلومة: العميل VIP #٤٥٢ يطلب عادةً في هذا الوقت” “` ## 🚀 خطة التنفيذ التدريجي ### المرحلة الأولى (أسبوعان): 1. **دمج نظام التحليل الزمني** الأساسي 2. **ربط بيانات المبيعات** مع الوقت 3. **تقارير منتجات أولية** حسب الوقت ### المرحلة الثانية (ثلاثة أسابيع): 1. **نظام الولاء المتكامل** 2. **برنامج المكافآت الزمني** 3. **تكامل واتساب الأساسي** ### المرحلة الثالثة (أربعة أسابيع): 1. **التقارير المتقدمة الشاملة** 2. **لوحات التحكم التفاعلية** 3. **نظام التنبؤ والتحسينات الذكية** — ## 💰 فوائد النظام المدمج ### زيادة الإيرادات المتوقعة: – **زيادة المبيعات**: ١٥-٢٥٪ عبر التحسين الزمني – **تحسين الولاء**: ٣٠٪ زيادة في العملاء المتكررين – **خفض التكاليف**: ٢٠٪ تحسين في إدارة المخزون – **كفاءة العمالة**: ٢٥٪ تحسين في توزيع المهام ### تحسين تجربة العميل: – **وقت انتظار أقل**: ٣٥٪ تحسين في أوقات التحضير – **عروض شخصية**: بناءً على أنماط الطلب السابقة – **متابعة أفضل**: عبر واتساب والتواصل الذكي — هذا النظام المدمج يحول **Twist Taste** من مجرد نظام إدارة مطعم إلى **منصة ذكية متكاملة** تستخدم التحليل الزمني الدقيق، تحليل الولاء المتقدم، وتقارير واتساب التفصيلية لتحقيق نمو مستدام وتحسين تجربة العملاء بشكل ملحوظ. # نظام Twist Taste الاحترافي المتكامل: نظام تقارير متقدم مع تحليل زمني بالساعات، تحليل ولاء متكامل، وإدارة تواصل واتساب ذكية ## 📋 نظرة عامة على النظام نظام متكامل لإدارة مطعم Twist Taste يجمع بين إدارة المبيعات والتحليلات المتقدمة وإدارة علاقات العملاء عبر واتساب. النظام يوفر تحليلاً زمنياً دقيقاً بالساعات، تحليل ولاء شامل، وإدارة تواصل ذكية مع العملاء. ## ⏰ **الوحدة الزمنية المتقدمة** ### تحديد النطاق الزمني الدقيق – **اختيار التاريخ**: تحديد تاريخ البداية والنهاية بدقة يومية – **تحديد الساعات**: تحديد الفترات من-إلى بدقة 60 دقيقة (08:00 – 17:00 أو 8:00 AM – 5:00 PM) – **دعم التنسيقين**: 24 ساعة وAM/PM – **فترات متعددة**: إمكانية اختيار فترات زمنية غير متصلة للمقارنة ### التحليلات الزمنية المتقدمة – **تحليل المبيعات بالساعة**: توزيع الطلبات والإيرادات كل ساعة – **مقارنات زمنية**: YoY, MoM, WoW, DoD, HoH – **تحليل الذروة**: تحديد ساعات وأيام الذروة بدقة – **التنبؤ الزمني**: توقع أحجام الطلب حسب الوقت ### ميزات خاصة بالمطعم: – **تحليل وقت التحضير**: متوسط وقت تحضير كل صنف – **أوقات الذروة للقوائم**: متى يطلب كل صنف أكثر – **تحليل وقت التوصيل**: حسب المناطق والوقت ## 💎 **نظام الولاء المتكامل (Loyalty System)** ### تصنيف العملاء الذكي “` مستويات الولاء: 1. 🆕 عملاء جدد (أول طلب) 2. 🔄 عملاء متكررين (2-5 طلبات) 3. ⭐ عملاء متميزين (6-15 طلبات) 4. 👑 عملاء VIP (16+ طلب) 5. 🏆 عملاء سفرة (طلبات عائلية كبيرة) “` ### مؤشرات الولاء الرئيسية – **معدل الاحتفاظ**: نسبة العودة للطلب – **قيمة العميل مدى الحياة (LTV)**: إجمالي إنفاق العميل – **معدل العودة**: متوسط الأيام بين الطلبات – **مؤشر NPS**: درجة التوصية بالمطعم – **معدل التوقف (Churn)**: العملاء الذين توقفوا عن الطلب ### برنامج المكافآت الزمني – **نقاط حسب الوقت**: مكافآت مضاعفة في الأوقات الهادئة – **عروض شخصية**: بناءً على تفضيلات الوقت للعميل – **مكافآت الولادة والمناسبات**: تذكارات في تواريخ خاصة ## 📱 **نظام واتساب الذكي المتكامل** ### إدارة التواصل مع العملاء **أنواع الرسائل المدعومة:** 1. **رسائل تلقائية**: – تأكيد الطلب تلقائياً – تحديث حالة الطلب – متابعة بعد التسليم – تذكير بالعروض 2. **رسائل جماعية ذكية**: – حسب فئة الولاء – حسب تفضيلات الطعام – حسب وقت الطلب المفضل – حسب المنطقة 3. **رسائل شخصية**: – في المناسبات الخاصة – عند بلوغ مراحل في برنامج الولاء – عروض مخصصة حسب التاريخ ### ميزات التواصل المتقدمة – **ردود تلقائية ذكية**: بناءً على نية الرسالة – **مكتبة قوالب**: قوالب جاهزة للرسائل المختلفة – **جدولة الرسائل**: إرسال في أوقات محددة – **تتبع التفاعل**: فتح الرسائل، النقرات، الردود ### تحليل أداء واتساب “` مؤشرات أداء التواصل: ✅ معدل فتح الرسائل ✅ معدل الرد على العروض ✅ وقت الاستجابة المتوسط ✅ معدل التحويل من الرسائل “` ## 🍽️ **إدارة المنتجات والطلبات الذكية** ### تحليل القوائم المتقدم **تصنيف المنتجات:** – الأكثر مبيعاً حسب الوقت – التركيبات الأكثر طلباً معاً – المنتجات الموسمية – معدل الربحية لكل صنف ### نظام الطلبات الذكي – **توصيات ذكية**: بناءً على تاريخ طلب العميل – **تحليل السلة**: منتجات تكمل بعضها – **التنبيهات الذكية**: نقص المخزون، طلبات VIP – **إدارة الجودة**: تتبع ملاحظات العملاء على كل طلب ## 📊 **التقارير واللوحات الذكية** ### لوحة التحكم الرئيسية “` ┌─────────────────────────────────────────────────────────┐ │ لوحة تحكم Twist Taste المتقدمة │ ├─────────────────┬─────────────────┬─────────────────┤ │ 📈 المبيعات │ ⏰ الزمني │ 💎 الولاء │ ├─────────────────┼─────────────────┼─────────────────┤ │ 📱 واتساب │ 🍽️ المنتجات │ 👥 العملاء │ └─────────────────┴─────────────────┴─────────────────┘ “` ### التقارير المتخصصة **1. التقرير اليومي الذكي:** “`markdown 📅 تقرير يومي: الخميس 15 يناير 2025 ⏰ الفترة: 08:00 – 23:00 🎯 الإحصاءات الرئيسية: • إجمالي المبيعات: 3,450 ر.س • عدد الطلبات: 62 طلب • متوسط قيمة الطلب: 55.6 ر.س • عملاء جدد: 15 عميل ⏰ التحليل الزمني: • ذروة المبيعات: 13:00-14:00 (18 طلب) • أفضل منتج في الذروة: كباب لحم تويست • وقت التحضير المتوسط: 14 دقيقة 💎 أداء الولاء: • العملاء المتكررين: 38 (61%) • العملاء الجدد: 15 (24%) • العملاء VIP: 9 (15%) • أعلى إنفاق: العميل #287 (195 ر.س) 📱 تفاعل واتساب: • رسائل مرسلة: 45 • معدل الرد: 92% • طلبات من واتساب: 22 طلب “` **2. تقرير أداء المنتجات:** – الأكثر مبيعاً مع توقيت الذروة – التركيبات المفضلة – معدلات العودة لكل منتج – هامش الربح الزمني **3. تقرير أداء الحملات:** – فعالية العروض عبر واتساب – معدل التحويل من الرسائل – العائد على الاستثمار في التواصل ## 🔄 **التكامل مع نظام Twist Taste الحالي** ### تحديث واجهة POS “` نظام البيع المحسن: ┌─────────────────────────────────────┐ │ Twist Taste POS المتقدم │ ├─────────────────────────────────────┤ │ الوقت: ١٤:٣٠ | المبيعات اليوم: ٢,١٥٠ ر.س │ │ الطلبات النشطة: ٨ | قيد التحضير: ٥ │ ├─────────────────────────────────────┤ │ 🔍 بحث ذكي في المنتجات │ │ 💎 معلومات الولاء (عند مسح العميل) │ │ 📱 إرسال تأكيد عبر واتساب │ │ ⚡ تحليل الوقت المتوقع للتحضير │ └─────────────────────────────────────┘ “` ### نظام إدارة المخزون الذكي – **تنبيهات تلقائية**: عند اقتراب نفاد المنتجات – **تحليل الاستهلاك**: حسب الوقت والفترات – **طلبية تلقائية**: بناءً على الأنماط الزمنية ## 🤖 **الذكاء الاصطناعي والتحليلات التنبؤية** ### نماذج التنبؤ المتقدمة 1. **نموذج توقع الطلب**: – حسب اليوم والوقت – حسب الطقس والأحداث – حسب العروض النشطة 2. **نموذج اكتشاف العملاء المعرضين للتوقف**: “`python def predict_churn(customer): عوامل_الخطر = [ customer.أيام_من_آخر_طلب > 30, customer.معدل_الطلبات_الشهري < 1, customer.آخر_تقييم < 3 ] return sum(عوامل_الخطر) >= 2 “` 3. **نموذح التحسين الزمني**: – أفضل أوقات للعروض – توزيع الموظفين الأمثل – إدارة المخزون حسب التوقعات ## 📱 **تطبيقات الجوال والدعم** ### تطبيق إدارة للفرق – **تنبيهات فورية**: للطلبات والعروض – **متابعة الأداء**: لكل موظف حسب الوقت – **التواصل الداخلي**: عبر النظام ### بوابة العملاء الذكية – **طلبات سريعة**: بناءً على التاريخ – **متابعة الطلبات**: في الوقت الفعلي – **برنامج الولاء**: متابعة النقاط والعروض ## 🛠️ **الميزات التقنية** ### البنية التحتية – **قاعدة بيانات**: MySQL/PostgreSQL مع دعم بيانات زمنية – **واجهة برمجة**: REST API للتكامل مع الأنظمة الأخرى – **خوادم**: قابلة للتوسع حسب الطلب ### التكاملات – **واتساب Business API**: التواصل الرسمي مع العملاء – **أنظمة الدفع**: مدى، Apple Pay، STC Pay – **منصات التوصيل**: HungerStation، Jahez، طلبات ### الأمان والخصوصية – **توافق GDPR**: حماية بيانات العملاء – **صلاحيات متعددة**: لكل دور في المطعم – **نسخ احتياطية**: يومية وأسبوعية ## 📈 **خطة التنفيذ** ### المرحلة 1: الأساسيات (أسبوعان) – تكامل النظام الزمني الأساسي – تقارير المبيعات حسب الوقت – نظام الولاء الأساسي ### المرحلة 2: التواصل (ثلاثة أسابيع) – تكامل واتساب Business API – نظام الرسائل التلقائية – مكتبة القوالب ### المرحلة 3: التحليلات (أربعة أسابيع) – التقارير المتقدمة – لوحات التحكم التفاعلية – نماذج التنبؤ ### المرحلة 4: التطوير (مستمر) – تطوير الميزات بناءً على البيانات – تحسين الخوارزميات – إضافة قنوات تواصل جديدة ## 💰 **الفوائد والعائد المتوقع** ### تحسين الأداء التشغيلي – **زيادة المبيعات**: 20-30% عبر التحسين الزمني – **تحسين الولاء**: 40% زيادة في العملاء المتكررين – **خفض التكاليف**: 15% تحسين في إدارة المخزون – **كفاءة العمالة**: 25% تحسين في الإنتاجية ### تحسين تجربة العميل – **وقت تحضير أقل**: 30% تحسين – **عروض شخصية**: بناءً على التفضيلات – **متابعة أفضل**: عبر واتساب ### عائد الاستثمار المتوقع – **فترة الاسترداد**: 3-6 أشهر – **العائد السنوي**: 150-200% على الاستثمار – **قيمة العميل**: زيادة 35% في LTV — ## 🎯 **نموذج الاستخدام النموذجي** ### سيناريو يومي: 1. **الصباح (8:00-11:00)**: – النظام يرسل عروض الفطور للعملاء الذين يطلبون في هذا الوقت – تحضير المخزون بناءً على توقعات الطلب 2. **الذروة (12:00-15:00)**: – تحليل الطلبات في الوقت الفعلي – توزيع الموظفين حسب الضغط – رسائل تأكيد تلقائية للطلبات 3. **المساء (16:00-20:00)**: – عروض خاصة للفترة المسائية – متابعة العملاء الذين لم يطلبوا منذ فترة – تحليل أداء اليوم 4. **الإغلاق (21:00-23:00)**: – تقرير أداء اليوم التلقائي – توقعات الطلب لليوم التالي – رسائل شكر للعملاء الجدد — هذا النظام يحول **Twist Taste** إلى مطعم ذكي يستخدم البيانات والتحليلات لاتخاذ قرارات أفضل، تحسين تجربة العملاء، وزيادة الإيرادات بشكل مستدام. النظام مصمم ليكون سهل الاستخدام مع إمكانيات تحليلية متقدمة تناسب احتياجات المطعم المتنامية.
نظام Twist Taste – قواعد البيانات المتكاملة مع العلاقات
📊 المخطط الشامل لقواعد البيانات
sql
-- Database: twist_taste_pro
-- Description: نظام متكامل لإدارة المطعم مع تحليل زمني، ولاء، وتواصل واتساب
-- ============================================
-- 1. الجداول الأساسية (Core Tables)
-- ============================================
-- جدول العملاء الأساسي
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
customer_uuid VARCHAR(36) UNIQUE NOT NULL,
full_name VARCHAR(100) NOT NULL,
phone_number VARCHAR(20) UNIQUE NOT NULL,
email VARCHAR(100),
registration_date DATETIME DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT TRUE,
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_phone (phone_number),
INDEX idx_registration_date (registration_date)
);
-- جدول العناوين
CREATE TABLE customer_addresses (
address_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
address_type ENUM('home', 'work', 'other') DEFAULT 'home',
address_line1 VARCHAR(200) NOT NULL,
address_line2 VARCHAR(200),
city VARCHAR(50) NOT NULL,
district VARCHAR(50),
latitude DECIMAL(10, 8),
longitude DECIMAL(11, 8),
is_default BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE,
INDEX idx_customer (customer_id),
INDEX idx_location (latitude, longitude)
);
-- ============================================
-- 2. نظام المنتجات والقوائم (Products & Menu)
-- ============================================
-- جدول الفئات
CREATE TABLE categories (
category_id INT PRIMARY KEY AUTO_INCREMENT,
category_name_ar VARCHAR(100) NOT NULL,
category_name_en VARCHAR(100),
description TEXT,
display_order INT DEFAULT 0,
image_url VARCHAR(500),
is_active BOOLEAN DEFAULT TRUE,
peak_start_time TIME,
peak_end_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- جدول المنتجات
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_code VARCHAR(50) UNIQUE NOT NULL,
product_name_ar VARCHAR(150) NOT NULL,
product_name_en VARCHAR(150),
category_id INT NOT NULL,
description TEXT,
base_price DECIMAL(10, 2) NOT NULL,
cost_price DECIMAL(10, 2),
is_active BOOLEAN DEFAULT TRUE,
preparation_time INT COMMENT 'زمن التحضير بالدقائق',
has_options BOOLEAN DEFAULT FALSE,
image_url VARCHAR(500),
tags JSON COMMENT 'وسوم مثل: موسمي, مميز, جديد',
nutritional_info JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (category_id) REFERENCES categories(category_id),
INDEX idx_category (category_id),
INDEX idx_active (is_active),
INDEX idx_preparation_time (preparation_time)
);
-- جدول خيارات المنتج
CREATE TABLE product_options (
option_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
option_name_ar VARCHAR(100) NOT NULL,
option_name_en VARCHAR(100),
option_type ENUM('size', 'addons', 'cooking', 'sides') NOT NULL,
is_required BOOLEAN DEFAULT FALSE,
max_selections INT DEFAULT 1,
display_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
INDEX idx_product (product_id)
);
-- جدول قيم الخيارات
CREATE TABLE option_values (
value_id INT PRIMARY KEY AUTO_INCREMENT,
option_id INT NOT NULL,
value_name_ar VARCHAR(100) NOT NULL,
value_name_en VARCHAR(100),
additional_price DECIMAL(10, 2) DEFAULT 0,
is_default BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (option_id) REFERENCES product_options(option_id) ON DELETE CASCADE,
INDEX idx_option (option_id)
);
-- ============================================
-- 3. نظام المخزون (Inventory)
-- ============================================
-- جدول المكونات
CREATE TABLE ingredients (
ingredient_id INT PRIMARY KEY AUTO_INCREMENT,
ingredient_code VARCHAR(50) UNIQUE NOT NULL,
ingredient_name_ar VARCHAR(100) NOT NULL,
ingredient_name_en VARCHAR(100),
unit ENUM('kg', 'gram', 'liter', 'piece', 'pack') NOT NULL,
current_stock DECIMAL(10, 3) DEFAULT 0,
minimum_stock DECIMAL(10, 3) DEFAULT 0,
reorder_point DECIMAL(10, 3) DEFAULT 0,
unit_cost DECIMAL(10, 2),
supplier_id INT,
last_restock_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_supplier (supplier_id),
INDEX idx_low_stock (current_stock, minimum_stock)
);
-- جدول وصفات المنتجات
CREATE TABLE product_recipes (
recipe_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
ingredient_id INT NOT NULL,
quantity_required DECIMAL(10, 3) NOT NULL,
unit VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE,
FOREIGN KEY (ingredient_id) REFERENCES ingredients(ingredient_id),
UNIQUE KEY unique_product_ingredient (product_id, ingredient_id)
);
-- جدول حركات المخزون
CREATE TABLE inventory_transactions (
transaction_id INT PRIMARY KEY AUTO_INCREMENT,
ingredient_id INT NOT NULL,
transaction_type ENUM('purchase', 'usage', 'adjustment', 'waste', 'return') NOT NULL,
quantity DECIMAL(10, 3) NOT NULL,
unit VARCHAR(20),
reference_type ENUM('order', 'purchase_order', 'manual') NOT NULL,
reference_id INT,
notes TEXT,
created_by INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (ingredient_id) REFERENCES ingredients(ingredient_id),
INDEX idx_ingredient (ingredient_id),
INDEX idx_date (created_at)
);
-- ============================================
-- 4. نظام الطلبات الأساسي (Orders)
-- ============================================
-- جدول الطلبات الرئيسي
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_number VARCHAR(50) UNIQUE NOT NULL,
customer_id INT,
order_type ENUM('delivery', 'pickup', 'dine_in') NOT NULL,
order_status ENUM('pending', 'confirmed', 'preparing', 'ready', 'out_for_delivery', 'delivered', 'cancelled') DEFAULT 'pending',
total_amount DECIMAL(10, 2) NOT NULL,
discount_amount DECIMAL(10, 2) DEFAULT 0,
tax_amount DECIMAL(10, 2) DEFAULT 0,
final_amount DECIMAL(10, 2) NOT NULL,
payment_method ENUM('cash', 'card', 'mada', 'apple_pay', 'online') DEFAULT 'cash',
payment_status ENUM('pending', 'paid', 'failed', 'refunded') DEFAULT 'pending',
order_date DATETIME NOT NULL,
preparation_time INT COMMENT 'زمن التحضير الفعلي بالدقائق',
delivery_time INT COMMENT 'زمن التوصيل بالدقائق',
notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
INDEX idx_customer (customer_id),
INDEX idx_status (order_status),
INDEX idx_date (order_date),
INDEX idx_order_number (order_number)
);
-- جدول عناصر الطلب
CREATE TABLE order_items (
order_item_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL DEFAULT 1,
unit_price DECIMAL(10, 2) NOT NULL,
total_price DECIMAL(10, 2) NOT NULL,
special_instructions TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(product_id),
INDEX idx_order (order_id),
INDEX idx_product (product_id)
);
-- جدول خيارات عنصر الطلب
CREATE TABLE order_item_options (
item_option_id INT PRIMARY KEY AUTO_INCREMENT,
order_item_id INT NOT NULL,
option_id INT NOT NULL,
value_id INT NOT NULL,
additional_price DECIMAL(10, 2) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_item_id) REFERENCES order_items(order_item_id) ON DELETE CASCADE,
FOREIGN KEY (option_id) REFERENCES product_options(option_id),
FOREIGN KEY (value_id) REFERENCES option_values(value_id)
);
-- جدول التوصيل
CREATE TABLE deliveries (
delivery_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL UNIQUE,
driver_id INT,
address_id INT NOT NULL,
estimated_delivery_time DATETIME,
actual_delivery_time DATETIME,
delivery_status ENUM('pending', 'assigned', 'picked_up', 'on_the_way', 'delivered', 'failed') DEFAULT 'pending',
delivery_notes TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (address_id) REFERENCES customer_addresses(address_id),
INDEX idx_driver (driver_id),
INDEX idx_delivery_time (estimated_delivery_time)
);
-- ============================================
-- 5. النظام الزمني المتقدم (Time Analytics)
-- ============================================
-- جدول تحليل المبيعات بالساعة
CREATE TABLE hourly_sales_analytics (
analytics_id INT PRIMARY KEY AUTO_INCREMENT,
analysis_date DATE NOT NULL,
hour_group INT NOT NULL COMMENT 'الساعة من 0 إلى 23',
total_orders INT DEFAULT 0,
total_amount DECIMAL(10, 2) DEFAULT 0,
avg_order_value DECIMAL(10, 2) DEFAULT 0,
peak_indicator BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_date_hour (analysis_date, hour_group),
INDEX idx_date (analysis_date),
INDEX idx_hour (hour_group)
);
-- جدول تحليل المنتجات حسب الوقت
CREATE TABLE product_time_analytics (
product_time_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
analysis_date DATE NOT NULL,
time_slot ENUM('breakfast', 'lunch', 'dinner', 'late_night') NOT NULL,
total_quantity INT DEFAULT 0,
total_amount DECIMAL(10, 2) DEFAULT 0,
peak_hour TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(product_id),
UNIQUE KEY unique_product_date_slot (product_id, analysis_date, time_slot),
INDEX idx_date_slot (analysis_date, time_slot)
);
-- جدول تحليل وقت التحضير
CREATE TABLE preparation_time_analytics (
prep_time_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
product_id INT NOT NULL,
preparation_start DATETIME,
preparation_end DATETIME,
actual_prep_time INT COMMENT 'بالدقائق',
standard_prep_time INT COMMENT 'الزمن القياسي بالدقائق',
efficiency_score DECIMAL(5, 2) COMMENT 'النسبة بين الفعلي والقياسي',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES products(product_id),
INDEX idx_product (product_id),
INDEX idx_efficiency (efficiency_score)
);
-- ============================================
-- 6. نظام الولاء المتكامل (Loyalty System)
-- ============================================
-- جدول مستويات الولاء
CREATE TABLE loyalty_tiers (
tier_id INT PRIMARY KEY AUTO_INCREMENT,
tier_name_ar VARCHAR(50) NOT NULL,
tier_name_en VARCHAR(50),
tier_level INT UNIQUE NOT NULL COMMENT 'المستوى (1 مبتدئ، 2 مبتكر، إلخ)',
min_orders INT DEFAULT 0,
min_amount DECIMAL(10, 2) DEFAULT 0,
icon VARCHAR(100),
color_code VARCHAR(7),
benefits JSON COMMENT 'المزايا كـ JSON',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- جدول ملف الولاء للعميل
CREATE TABLE customer_loyalty (
loyalty_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL UNIQUE,
current_tier_id INT NOT NULL DEFAULT 1,
total_points DECIMAL(10, 2) DEFAULT 0,
redeemed_points DECIMAL(10, 2) DEFAULT 0,
available_points DECIMAL(10, 2) DEFAULT 0,
total_orders INT DEFAULT 0,
total_spent DECIMAL(10, 2) DEFAULT 0,
avg_order_value DECIMAL(10, 2) DEFAULT 0,
last_order_date DATETIME,
days_since_last_order INT DEFAULT 0,
loyalty_score DECIMAL(5, 2) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
FOREIGN KEY (current_tier_id) REFERENCES loyalty_tiers(tier_id),
INDEX idx_tier (current_tier_id),
INDEX idx_score (loyalty_score)
);
-- جدول حركات الولاء (النقاط)
CREATE TABLE loyalty_transactions (
transaction_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_id INT,
points_earned DECIMAL(10, 2) DEFAULT 0,
points_redeemed DECIMAL(10, 2) DEFAULT 0,
transaction_type ENUM('earn', 'redeem', 'adjust', 'expire') NOT NULL,
description VARCHAR(200),
expiry_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
INDEX idx_customer (customer_id),
INDEX idx_order (order_id)
);
-- جدول العروض المخصصة حسب الولاء
CREATE TABLE loyalty_offers (
offer_id INT PRIMARY KEY AUTO_INCREMENT,
tier_id INT NOT NULL,
offer_name_ar VARCHAR(100) NOT NULL,
offer_name_en VARCHAR(100),
offer_type ENUM('discount', 'free_item', 'points_multiplier', 'special_access') NOT NULL,
discount_percentage DECIMAL(5, 2),
discount_amount DECIMAL(10, 2),
free_product_id INT,
points_multiplier DECIMAL(5, 2) DEFAULT 1,
valid_from DATETIME NOT NULL,
valid_to DATETIME NOT NULL,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tier_id) REFERENCES loyalty_tiers(tier_id),
FOREIGN KEY (free_product_id) REFERENCES products(product_id),
INDEX idx_tier (tier_id),
INDEX idx_validity (valid_from, valid_to)
);
-- ============================================
-- 7. نظام واتساب المتكامل (WhatsApp Integration)
-- ============================================
-- جدول اتصالات واتساب
CREATE TABLE whatsapp_conversations (
conversation_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
phone_number VARCHAR(20) NOT NULL,
last_message_date DATETIME,
message_count INT DEFAULT 0,
status ENUM('active', 'inactive', 'blocked') DEFAULT 'active',
opt_in_date DATETIME,
opt_out_date DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
UNIQUE KEY unique_customer_phone (customer_id, phone_number),
INDEX idx_phone (phone_number)
);
-- جدول رسائل واتساب
CREATE TABLE whatsapp_messages (
message_id INT PRIMARY KEY AUTO_INCREMENT,
conversation_id INT NOT NULL,
message_type ENUM('incoming', 'outgoing') NOT NULL,
message_content TEXT NOT NULL,
template_name VARCHAR(100),
media_url VARCHAR(500),
sent_at DATETIME,
delivered_at DATETIME,
read_at DATETIME,
message_status ENUM('sent', 'delivered', 'read', 'failed') DEFAULT 'sent',
error_message TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (conversation_id) REFERENCES whatsapp_conversations(conversation_id),
INDEX idx_conversation (conversation_id),
INDEX idx_sent_date (sent_at)
);
-- جدول قوالب الرسائل
CREATE TABLE whatsapp_templates (
template_id INT PRIMARY KEY AUTO_INCREMENT,
template_name VARCHAR(100) UNIQUE NOT NULL,
template_name_ar VARCHAR(100),
category ENUM('order_confirmation', 'status_update', 'promotional', 'service', 'feedback') NOT NULL,
language_code VARCHAR(10) DEFAULT 'ar',
header_text TEXT,
body_text TEXT NOT NULL,
footer_text TEXT,
buttons JSON COMMENT 'أزرار الـ CTA',
variables JSON COMMENT 'المتغيرات الديناميكية',
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_category (category)
);
-- جدول حملات واتساب
CREATE TABLE whatsapp_campaigns (
campaign_id INT PRIMARY KEY AUTO_INCREMENT,
campaign_name VARCHAR(100) NOT NULL,
target_audience JSON COMMENT 'معايير الجمهور المستهدف',
template_id INT NOT NULL,
scheduled_time DATETIME,
sent_count INT DEFAULT 0,
delivered_count INT DEFAULT 0,
read_count INT DEFAULT 0,
response_rate DECIMAL(5, 2) DEFAULT 0,
conversion_rate DECIMAL(5, 2) DEFAULT 0,
status ENUM('draft', 'scheduled', 'sending', 'sent', 'cancelled') DEFAULT 'draft',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (template_id) REFERENCES whatsapp_templates(template_id),
INDEX idx_status (status),
INDEX idx_scheduled_time (scheduled_time)
);
-- ============================================
-- 8. النظام التحليلي المتقدم (Advanced Analytics)
-- ============================================
-- جدول المقاييس الرئيسية
CREATE TABLE kpi_metrics (
kpi_id INT PRIMARY KEY AUTO_INCREMENT,
metric_date DATE NOT NULL,
total_revenue DECIMAL(12, 2) DEFAULT 0,
total_orders INT DEFAULT 0,
avg_order_value DECIMAL(10, 2) DEFAULT 0,
new_customers INT DEFAULT 0,
returning_customers INT DEFAULT 0,
customer_acquisition_cost DECIMAL(10, 2) DEFAULT 0,
customer_lifetime_value DECIMAL(10, 2) DEFAULT 0,
peak_hour_orders INT DEFAULT 0,
peak_hour_revenue DECIMAL(12, 2) DEFAULT 0,
preparation_efficiency DECIMAL(5, 2) DEFAULT 0,
whatsapp_conversion_rate DECIMAL(5, 2) DEFAULT 0,
loyalty_engagement_rate DECIMAL(5, 2) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_metric_date (metric_date),
INDEX idx_date (metric_date)
);
-- جدول التنبؤات
CREATE TABLE sales_predictions (
prediction_id INT PRIMARY KEY AUTO_INCREMENT,
prediction_date DATE NOT NULL,
time_slot TIME NOT NULL,
predicted_orders INT NOT NULL,
predicted_revenue DECIMAL(10, 2) NOT NULL,
confidence_level DECIMAL(5, 2) COMMENT 'مستوى الثقة في التنبؤ',
factors JSON COMMENT 'العوامل المؤثرة في التنبؤ',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_date_slot (prediction_date, time_slot),
INDEX idx_prediction_date (prediction_date)
);
-- جدول تحليل العملاء
CREATE TABLE customer_segments (
segment_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
segment_type ENUM('spending', 'frequency', 'time_preference', 'product_preference') NOT NULL,
segment_value VARCHAR(50) NOT NULL,
confidence_score DECIMAL(5, 2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
UNIQUE KEY unique_customer_segment (customer_id, segment_type),
INDEX idx_segment (segment_type, segment_value)
);
-- ============================================
-- 9. النظام التشغيلي (Operational)
-- ============================================
-- جدول الموظفين
CREATE TABLE employees (
employee_id INT PRIMARY KEY AUTO_INCREMENT,
employee_code VARCHAR(50) UNIQUE NOT NULL,
full_name VARCHAR(100) NOT NULL,
role ENUM('manager', 'chef', 'cashier', 'waiter', 'driver', 'admin') NOT NULL,
phone_number VARCHAR(20),
email VARCHAR(100),
is_active BOOLEAN DEFAULT TRUE,
pin_code VARCHAR(6) COMMENT 'كود الدخول للنظام',
permissions JSON COMMENT 'صلاحيات الموظف',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_role (role)
);
-- جدول المناوبات
CREATE TABLE shifts (
shift_id INT PRIMARY KEY AUTO_INCREMENT,
employee_id INT NOT NULL,
shift_date DATE NOT NULL,
start_time TIME NOT NULL,
end_time TIME NOT NULL,
actual_start TIME,
actual_end TIME,
break_start TIME,
break_end TIME,
shift_status ENUM('scheduled', 'in_progress', 'completed', 'cancelled') DEFAULT 'scheduled',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (employee_id) REFERENCES employees(employee_id),
INDEX idx_employee_date (employee_id, shift_date),
INDEX idx_shift_date (shift_date)
);
-- جدول التنبيهات
CREATE TABLE system_alerts (
alert_id INT PRIMARY KEY AUTO_INCREMENT,
alert_type ENUM('inventory', 'order', 'time', 'customer', 'system') NOT NULL,
alert_level ENUM('info', 'warning', 'critical') NOT NULL,
title_ar VARCHAR(200) NOT NULL,
title_en VARCHAR(200),
description TEXT,
related_id INT COMMENT 'معرف السجل المرتبط',
related_type VARCHAR(50) COMMENT 'نوع السجل المرتبط',
is_read BOOLEAN DEFAULT FALSE,
acknowledged_by INT,
acknowledged_at DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_type_level (alert_type, alert_level),
INDEX idx_created (created_at)
);
-- ============================================
-- 10. جداول التكامل والإعدادات (Settings & Integration)
-- ============================================
-- جدول إعدادات النظام
CREATE TABLE system_settings (
setting_id INT PRIMARY KEY AUTO_INCREMENT,
setting_key VARCHAR(100) UNIQUE NOT NULL,
setting_value TEXT,
setting_type ENUM('string', 'number', 'boolean', 'json', 'array') DEFAULT 'string',
category VARCHAR(50),
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_category (category)
);
-- جدول تكامل واتساب
CREATE TABLE whatsapp_integration (
integration_id INT PRIMARY KEY AUTO_INCREMENT,
business_id VARCHAR(100),
phone_number_id VARCHAR(100),
access_token TEXT,
webhook_url VARCHAR(500),
webhook_verified BOOLEAN DEFAULT FALSE,
is_active BOOLEAN DEFAULT FALSE,
last_sync DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- جدول سجل النشاط
CREATE TABLE activity_log (
log_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT COMMENT 'معرف المستخدم (موظف أو نظام)',
user_type ENUM('employee', 'system', 'customer') DEFAULT 'system',
activity_type VARCHAR(100) NOT NULL,
description TEXT,
ip_address VARCHAR(45),
user_agent TEXT,
metadata JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id, user_type),
INDEX idx_activity_type (activity_type),
INDEX idx_created (created_at)
);
-- ============================================
-- 11. علاقات إضافية وترابطات مهمة
-- ============================================
-- جدول تقييمات العملاء
CREATE TABLE customer_reviews (
review_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL UNIQUE,
customer_id INT NOT NULL,
rating INT CHECK (rating >= 1 AND rating <= 5),
review_text TEXT,
food_quality INT CHECK (food_quality >= 1 AND food_quality <= 5),
delivery_time INT CHECK (delivery_time >= 1 AND delivery_time <= 5),
customer_service INT CHECK (customer_service >= 1 AND customer_service <= 5),
is_approved BOOLEAN DEFAULT TRUE,
responded BOOLEAN DEFAULT FALSE,
response_text TEXT,
responded_at DATETIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
INDEX idx_customer (customer_id),
INDEX idx_rating (rating)
);
-- جدول العروض والتخفيضات
CREATE TABLE promotions (
promotion_id INT PRIMARY KEY AUTO_INCREMENT,
promotion_code VARCHAR(50) UNIQUE NOT NULL,
promotion_name_ar VARCHAR(100) NOT NULL,
promotion_name_en VARCHAR(100),
promotion_type ENUM('percentage', 'fixed_amount', 'buy_one_get_one', 'free_delivery') NOT NULL,
discount_value DECIMAL(10, 2),
min_order_amount DECIMAL(10, 2) DEFAULT 0,
max_discount_amount DECIMAL(10, 2),
valid_from DATETIME NOT NULL,
valid_to DATETIME NOT NULL,
usage_limit INT,
used_count INT DEFAULT 0,
customer_limit INT DEFAULT 1,
is_active BOOLEAN DEFAULT TRUE,
applicable_categories JSON,
excluded_products JSON,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_validity (valid_from, valid_to),
INDEX idx_code (promotion_code)
);
-- جدول استخدام العروض
CREATE TABLE promotion_usage (
usage_id INT PRIMARY KEY AUTO_INCREMENT,
promotion_id INT NOT NULL,
order_id INT NOT NULL,
customer_id INT NOT NULL,
discount_amount DECIMAL(10, 2) NOT NULL,
used_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (promotion_id) REFERENCES promotions(promotion_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
UNIQUE KEY unique_promotion_order (promotion_id, order_id),
INDEX idx_customer_promotion (customer_id, promotion_id)
);
-- جدول التحليلات الزمنية المتقدمة
CREATE TABLE time_pattern_analysis (
pattern_id INT PRIMARY KEY AUTO_INCREMENT,
pattern_date DATE NOT NULL,
day_of_week INT COMMENT '1=الأحد, 2=الإثنين, ...',
is_holiday BOOLEAN DEFAULT FALSE,
weather_data JSON COMMENT 'بيانات الطقس',
special_event VARCHAR(200),
total_orders INT DEFAULT 0,
total_revenue DECIMAL(12, 2) DEFAULT 0,
peak_hours JSON COMMENT 'ساعات الذروة مع التفاصيل',
avg_preparation_time DECIMAL(5, 2) DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_date (pattern_date),
INDEX idx_day_of_week (day_of_week),
INDEX idx_holiday (is_holiday)
);
-- ============================================
-- 12. الجداول المساعدة (Helper Tables)
-- ============================================
-- جدول المناطق والتوصيل
CREATE TABLE delivery_zones (
zone_id INT PRIMARY KEY AUTO_INCREMENT,
zone_name VARCHAR(100) NOT NULL,
delivery_fee DECIMAL(10, 2) DEFAULT 0,
min_delivery_time INT COMMENT 'الحد الأدنى للوقت بالدقائق',
max_delivery_time INT COMMENT 'الحد الأقصى للوقت بالدقائق',
polygon_coordinates JSON COMMENT 'إحداثيات المنطقة',
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- جدول أوقات العمل
CREATE TABLE working_hours (
hours_id INT PRIMARY KEY AUTO_INCREMENT,
day_of_week INT NOT NULL COMMENT '1=الأحد, 2=الإثنين, ...',
open_time TIME NOT NULL,
close_time TIME NOT NULL,
is_open BOOLEAN DEFAULT TRUE,
special_date DATE COMMENT 'لأيام معينة مثل العطل',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_day (day_of_week)
);
-- جدول الأسعار الديناميكية
CREATE TABLE dynamic_pricing (
pricing_id INT PRIMARY KEY AUTO_INCREMENT,
product_id INT NOT NULL,
day_of_week INT,
time_from TIME,
time_to TIME,
price_multiplier DECIMAL(5, 2) DEFAULT 1.0,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(product_id),
INDEX idx_product_time (product_id, time_from, time_to)
);
🔗 العلاقات الرئيسية بين الجداول
1. العلاقات الأساسية للطلبات
text
customers (1) ──── (n) orders (1) ──── (n) order_items
│ │
├───────────────────────┘
↓
deliveries (1) ──── (1) orders
2. علاقات المنتجات والمخزون
text
categories (1) ──── (n) products (1) ──── (n) product_options
│ │
├────────────────────────┘
↓
product_recipes (n) ──── (1) ingredients
3. علاقات الولاء
text
customers (1) ──── (1) customer_loyalty (n) ──── (1) loyalty_tiers
│
└─── (n) loyalty_transactions
4. علاقات واتساب
text
customers (1) ──── (n) whatsapp_conversations (1) ──── (n) whatsapp_messages
│
whatsapp_campaigns (n) ──── (1) whatsapp_templates ────┘
5. العلاقات الزمنية
text
orders (n) ──── (1) hourly_sales_analytics │ ├─── (n) preparation_time_analytics │ └─── (n) product_time_analytics
📊 الفهارس المحسنة للأداء
sql
-- فهارس إضافية للأداء CREATE INDEX idx_orders_composite ON orders(order_date, order_status, customer_id); CREATE INDEX idx_order_items_composite ON order_items(order_id, product_id); CREATE INDEX idx_customer_loyalty_composite ON customer_loyalty(loyalty_score, current_tier_id, total_spent); CREATE INDEX idx_whatsapp_messages_composite ON whatsapp_messages(conversation_id, sent_at, message_status); CREATE INDEX idx_time_analytics_composite ON hourly_sales_analytics(analysis_date, hour_group, peak_indicator); CREATE INDEX idx_inventory_low_stock ON ingredients(current_stock) WHERE current_stock < minimum_stock; -- فهارس للبحث السريع CREATE FULLTEXT INDEX idx_products_search ON products(product_name_ar, product_name_en, description); CREATE FULLTEXT INDEX idx_customers_search ON customers(full_name, phone_number, email); CREATE INDEX idx_orders_search ON orders(order_number, customer_id, order_date);
🔄 المشغلات (Triggers) المهمة
sql
-- تحديث إحصائيات الولاء تلقائياً
DELIMITER //
CREATE TRIGGER update_customer_loyalty_after_order
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
DECLARE customer_exists INT;
DECLARE current_points DECIMAL(10,2);
SELECT COUNT(*) INTO customer_exists
FROM customer_loyalty
WHERE customer_id = NEW.customer_id;
IF customer_exists > 0 THEN
-- تحديث الإحصائيات الحالية
UPDATE customer_loyalty cl
SET
total_orders = total_orders + 1,
total_spent = total_spent + NEW.final_amount,
avg_order_value = (total_spent + NEW.final_amount) / (total_orders + 1),
last_order_date = NEW.order_date,
days_since_last_order = 0,
loyalty_score = calculate_loyalty_score(cl.customer_id),
updated_at = NOW()
WHERE customer_id = NEW.customer_id;
-- إضافة نقاط جديدة
SELECT available_points INTO current_points
FROM customer_loyalty
WHERE customer_id = NEW.customer_id;
INSERT INTO loyalty_transactions (customer_id, order_id, points_earned, transaction_type, description)
VALUES (NEW.customer_id, NEW.order_id, NEW.final_amount * 0.1, 'earn', 'نقاط من طلب جديد');
UPDATE customer_loyalty
SET available_points = current_points + (NEW.final_amount * 0.1)
WHERE customer_id = NEW.customer_id;
ELSE
-- إنشاء سجل ولاء جديد
INSERT INTO customer_loyalty (customer_id, total_orders, total_spent, avg_order_value, last_order_date)
VALUES (NEW.customer_id, 1, NEW.final_amount, NEW.final_amount, NEW.order_date);
END IF;
END //
DELIMITER ;
-- تحديث المخزون تلقائياً
DELIMITER //
CREATE TRIGGER update_inventory_after_order
AFTER INSERT ON order_items
FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE ingredient_id_val INT;
DECLARE quantity_needed DECIMAL(10,3);
DECLARE cur CURSOR FOR
SELECT ingredient_id, quantity_required
FROM product_recipes
WHERE product_id = NEW.product_id;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO ingredient_id_val, quantity_needed;
IF done THEN
LEAVE read_loop;
END IF;
-- خصم من المخزون
UPDATE ingredients
SET current_stock = current_stock - (quantity_needed * NEW.quantity)
WHERE ingredient_id = ingredient_id_val;
-- تسجيل حركة المخزون
INSERT INTO inventory_transactions (ingredient_id, transaction_type, quantity, reference_type, reference_id)
VALUES (ingredient_id_val, 'usage', quantity_needed * NEW.quantity, 'order', NEW.order_item_id);
END LOOP;
CLOSE cur;
END //
DELIMITER ;
-- تحديث التحليلات الزمنية
DELIMITER //
CREATE TRIGGER update_time_analytics_after_order
AFTER UPDATE ON orders
FOR EACH ROW
BEGIN
IF NEW.order_status = 'delivered' AND OLD.order_status != 'delivered' THEN
-- تحديث تحليل المبيعات بالساعة
INSERT INTO hourly_sales_analytics (analysis_date, hour_group, total_orders, total_amount)
VALUES (DATE(NEW.order_date), HOUR(NEW.order_date), 1, NEW.final_amount)
ON DUPLICATE KEY UPDATE
total_orders = total_orders + 1,
total_amount = total_amount + NEW.final_amount,
avg_order_value = total_amount / total_orders;
-- تحديد إذا كانت ساعة ذروة
UPDATE hourly_sales_analytics
SET peak_indicator = total_orders > (
SELECT AVG(total_orders) * 1.5
FROM hourly_sales_analytics
WHERE analysis_date = DATE(NEW.order_date)
)
WHERE analysis_date = DATE(NEW.order_date) AND hour_group = HOUR(NEW.order_date);
END IF;
END //
DELIMITER ;
📈 وظائف مساعدة للتحليلات
sql
-- حساب درجة الولاء
DELIMITER //
CREATE FUNCTION calculate_loyalty_score(c_id INT)
RETURNS DECIMAL(5,2)
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE score DECIMAL(5,2);
DECLARE orders_count INT;
DECLARE total_spent_val DECIMAL(10,2);
DECLARE avg_order_val DECIMAL(10,2);
DECLARE days_since_last INT;
SELECT
total_orders,
total_spent,
avg_order_value,
days_since_last_order
INTO
orders_count,
total_spent_val,
avg_order_val,
days_since_last
FROM customer_loyalty
WHERE customer_id = c_id;
-- خوارزمية حساب الدرجة
SET score =
(orders_count * 0.3) +
(total_spent_val / 100 * 0.4) +
(avg_order_val / 50 * 0.2) -
(days_since_last * 0.1);
RETURN GREATEST(0, LEAST(100, score));
END //
DELIMITER ;
-- تحديد فترة الوقت
DELIMITER //
CREATE FUNCTION get_time_slot(order_time TIME)
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
RETURN CASE
WHEN order_time BETWEEN '05:00:00' AND '10:59:59' THEN 'breakfast'
WHEN order_time BETWEEN '11:00:00' AND '15:59:59' THEN 'lunch'
WHEN order_time BETWEEN '16:00:00' AND '20:59:59' THEN 'dinner'
ELSE 'late_night'
END;
END //
DELIMITER ;
-- حساب الوقت المتوقع للتجهيز
DELIMITER //
CREATE FUNCTION calculate_expected_prep_time(order_id_val INT)
RETURNS INT
DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE total_prep_time INT DEFAULT 0;
DECLARE max_prep_time INT DEFAULT 0;
-- حساب الوقت بناءً على المنتجات
SELECT
SUM(p.preparation_time * oi.quantity),
MAX(p.preparation_time)
INTO
total_prep_time,
max_prep_time
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id
WHERE oi.order_id = order_id_val;
-- تطبيق خوارزمية حساب الوقت (يمكن تعديلها)
RETURN LEAST(60, GREATEST(15, total_prep_time * 0.7 + max_prep_time * 0.3));
END //
DELIMITER ;
🗄️ إجراءات التخزين المهمة
sql
-- إجراء لتوليد تقرير يومي
DELIMITER //
CREATE PROCEDURE generate_daily_report(IN report_date DATE)
BEGIN
-- تقرير المبيعات
SELECT
COUNT(*) as total_orders,
SUM(final_amount) as total_revenue,
AVG(final_amount) as avg_order_value,
COUNT(DISTINCT customer_id) as unique_customers
FROM orders
WHERE DATE(order_date) = report_date;
-- تحليل الوقت
SELECT
HOUR(order_date) as hour_of_day,
COUNT(*) as orders_count,
SUM(final_amount) as hour_revenue
FROM orders
WHERE DATE(order_date) = report_date
GROUP BY HOUR(order_date)
ORDER BY hour_of_day;
-- تحليل المنتجات
SELECT
p.product_name_ar,
COUNT(*) as order_count,
SUM(oi.quantity) as total_quantity,
SUM(oi.total_price) as total_revenue
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id
JOIN orders o ON oi.order_id = o.order_id
WHERE DATE(o.order_date) = report_date
GROUP BY p.product_id
ORDER BY order_count DESC
LIMIT 10;
-- تحليل العملاء
SELECT
CASE
WHEN cl.total_orders >= 10 THEN 'VIP'
WHEN cl.total_orders >= 5 THEN 'متكرر'
ELSE 'جديد'
END as customer_segment,
COUNT(*) as customer_count,
AVG(o.final_amount) as avg_spent
FROM orders o
JOIN customer_loyalty cl ON o.customer_id = cl.customer_id
WHERE DATE(o.order_date) = report_date
GROUP BY customer_segment;
END //
DELIMITER ;
-- إجراء لتحديد العروض المخصصة
DELIMITER //
CREATE PROCEDURE get_personalized_offers(IN customer_id_val INT)
BEGIN
DECLARE customer_tier INT;
DECLARE fav_category INT;
-- الحصول على مستوى العميل
SELECT current_tier_id INTO customer_tier
FROM customer_loyalty
WHERE customer_id = customer_id_val;
-- الحصول على الفئة المفضلة
SELECT p.category_id INTO fav_category
FROM order_items oi
JOIN products p ON oi.product_id = p.product_id
JOIN orders o ON oi.order_id = o.order_id
WHERE o.customer_id = customer_id_val
GROUP BY p.category_id
ORDER BY COUNT(*) DESC
LIMIT 1;
-- العروض المخصصة
SELECT
o.*,
CASE
WHEN o.offer_type = 'discount' THEN CONCAT('خصم ', o.discount_percentage, '%')
WHEN o.offer_type = 'free_item' THEN 'هدية مجانية'
ELSE 'عرض خاص'
END as offer_description
FROM loyalty_offers o
WHERE o.tier_id <= customer_tier
AND o.is_active = TRUE
AND NOW() BETWEEN o.valid_from AND o.valid_to
UNION
SELECT
p.*,
CONCAT('عرض خاص على فئة ', c.category_name_ar) as offer_description
FROM promotions p
CROSS JOIN categories c
WHERE c.category_id = fav_category
AND p.is_active = TRUE
AND NOW() BETWEEN p.valid_from AND p.valid_to
ORDER BY valid_to ASC;
END //
DELIMITER ;
🛡️ إعدادات الأمان والصلاحيات
sql
-- جدول أدوار المستخدمين
CREATE TABLE user_roles (
role_id INT PRIMARY KEY AUTO_INCREMENT,
role_name VARCHAR(50) UNIQUE NOT NULL,
permissions JSON NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- إدراج الأدوار الأساسية
INSERT INTO user_roles (role_name, permissions) VALUES
('admin', '{"all": true}'),
('manager', '{"reports": true, "inventory": true, "orders": true, "menu": true}'),
('chef', '{"orders": true, "inventory": true}'),
('cashier', '{"orders": true, "customers": true}'),
('driver', '{"deliveries": true}');
-- تحديث جدول الموظفين لإضافة الصلاحيات
ALTER TABLE employees
ADD COLUMN role_id INT,
ADD FOREIGN KEY (role_id) REFERENCES user_roles(role_id);
🔄 مزامنة البيانات مع واتساب
sql
-- إجراء لمزامنة رسائل واتساب
DELIMITER //
CREATE PROCEDURE sync_whatsapp_messages()
BEGIN
DECLARE last_sync_time DATETIME;
-- الحصول على آخر وقت مزامنة
SELECT last_sync INTO last_sync_time
FROM whatsapp_integration
WHERE is_active = TRUE
LIMIT 1;
-- هنا سيتم تنفيذ منطق المزامنة مع واتساب API
-- (يتم تنفيذه في الكود البرمجي وليس SQL مباشرة)
-- تحديث وقت المزامنة
UPDATE whatsapp_integration
SET last_sync = NOW()
WHERE is_active = TRUE;
END //
DELIMITER ;
📋 نموذج بيانات الاختبار
sql
-- بيانات اختبارية للمستويات
INSERT INTO loyalty_tiers (tier_name_ar, tier_name_en, tier_level, min_orders, min_amount, color_code, benefits) VALUES
('جديد', 'New', 1, 0, 0, '#95a5a6', '{"welcome_message": true, "first_order_discount": 10}'),
('متكرر', 'Regular', 2, 3, 150, '#3498db', '{"faster_delivery": true, "birthday_gift": true}'),
('مميز', 'Premium', 3, 10, 500, '#9b59b6', '{"free_delivery": true, "priority_support": true, "exclusive_offers": true}'),
('VIP', 'VIP', 4, 25, 1500, '#e74c3c', '{"personal_manager": true, "special_events": true, "sneak_peeks": true}');
-- بيانات الفئات الأساسية
INSERT INTO categories (category_name_ar, category_name_en, display_order, peak_start_time, peak_end_time) VALUES
('المشويات', 'Grills', 1, '12:00:00', '15:00:00'),
('الباستا', 'Pasta', 2, '13:00:00', '16:00:00'),
('المقبلات', 'Appetizers', 3, '11:00:00', '14:00:00'),
('البوكسات', 'Boxes', 4, '12:00:00', '14:00:00'),
('المشروبات', 'Beverages', 5, NULL, NULL);
-- إعدادات النظام الأساسية
INSERT INTO system_settings (setting_key, setting_value, setting_type, category, description) VALUES
('restaurant_name', 'Twist Taste', 'string', 'general', 'اسم المطعم'),
('currency', 'SAR', 'string', 'general', 'العملة المستخدمة'),
('tax_rate', '15', 'number', 'financial', 'نسبة الضريبة'),
('delivery_fee', '10', 'number', 'delivery', 'رسوم التوصيل'),
('opening_time', '08:00', 'string', 'working_hours', 'وقت الفتح'),
('closing_time', '23:00', 'string', 'working_hours', 'وقت الإغلاق'),
('whatsapp_enabled', 'true', 'boolean', 'whatsapp', 'تفعيل واتساب'),
('loyalty_enabled', 'true', 'boolean', 'loyalty', 'تفعيل نظام الولاء'),
('time_analytics_enabled', 'true', 'boolean', 'analytics', 'تفعيل التحليلات الزمنية');
🎯 مخطط العلاقات المرئي
text
┌─────────────────────────────────────────────────────────────────────────────┐ │ Twist Taste Database Schema │ ├─────────────────────┬─────────────────────┬─────────────────────┬───────────┤ │ Core Entities │ Time Analytics │ Loyalty System │ WhatsApp │ ├─────────────────────┼─────────────────────┼─────────────────────┼───────────┤ │ • customers │ • hourly_sales │ • loyalty_tiers │ • whatsapp │ │ • products │ • product_time │ • customer_loyalty │ conversations│ │ • orders │ • preparation_time │ • loyalty_trans │ • whatsapp │ │ • order_items │ • time_pattern │ • loyalty_offers │ messages │ │ • ingredients │ │ │ • whatsapp │ │ • deliveries │ │ │ templates│ │ │ │ │ • whatsapp │ │ │ │ │ campaigns│ ├─────────────────────┼─────────────────────┼─────────────────────┼───────────┤ │ Operational │ Advanced Analytics │ Promotions │ Settings │ ├─────────────────────┼─────────────────────┼─────────────────────┼───────────┤ │ • employees │ • kpi_metrics │ • promotions │ • system │ │ • shifts │ • sales_predictions│ • promotion_usage │ settings│ │ • system_alerts │ • customer_segments│ • customer_reviews │ • activity│ │ • working_hours │ │ • delivery_zones │ log │ │ • dynamic_pricing │ │ │ • whatsapp│ │ │ │ │ integration│ └─────────────────────┴─────────────────────┴─────────────────────┴───────────┘
هذا التصميم يوفر نظام قاعدة بيانات متكامل ومترابط يدعم جميع ميزات Twist Taste الاحترافية بما في ذلك التحليل الزمني المتقدم، نظام الولاء المتكامل، وإدارة واتساب الذكية. النظام قابل للتوسع ومصمم للأداء العالي مع الحفاظ على سلامة البيانات.