الموقع: إيه اللي نبني عليه وإيه اللي نبنيه من الصفر
فريق الموقع عامل بروتوتايب على flouka.runasp.net فيه منتجات حقيقية وأقسام وعروض ونقاط ولاء وباب جملة. الشكل حلو، بس المنطق كله لسه علينا: الأسعار والعروض والنقاط والسلة لازم تتحسب في السيرفر عشان الموقع واللوحة والتقارير يقولوا نفس الرقم. الصفحة دي بتعدّي على البروتوتايب سطر سطر وتصنّف كل حاجة، وبعدين تعرّف كل ميزة تسويقية بقاعدة دقيقة ومثال وحالات طرفية.
الموقع التجريبي في سطور
اللي اتعمل كويس، واللي محتاج يتصلّح، والقاعدة اللي بنمشي بيها: الموقع واجهة بس — والحساب كله عندنا (Q16).
الموقع وتطبيق الموبايل الاتنين بلغتين، والعربي الافتراضي، والاتنين بيشتغلوا على نفس الـ API. كل حاجة في الصفحة دي بتتبني بلغتين: أسماء المنتجات وأوصافها وخاماتها، الألوان والمقاسات، الأقسام، العروض، باقات الصور، مستويات النقاط، الشروط، صفحات المحتوى، والبانرات (وفيها صورة لكل لغة اختياري). الواجهة بتبعت Accept-Language والـ API بيرد باللغة المطلوبة، ورابط وعنوان SEO لكل لغة. تنبيه: أسماء المنتجات الحالية إنجليزي بس، فالعربي محتاج ترجمة (التعارض C16 في صفحة 11).
البروتوتايب سطر سطر
كل حاجة ظاهرة في الموقع التجريبي S7، تصنيفها، واللي الباك إند لازم يوفره عشان تشتغل بجد.
| # | اللي في الموقع | التصنيف | اللي الباك إند لازم يوفره | ملاحظة |
|---|---|---|---|---|
| 1 | الهيرو والبانرات | عرض | بانرات من اللوحة (صورة أو فيديو، لينك، جدولة، موبايل/ديسكتوب) | العميل عايز الهيرو فيديو S6 |
| 2 | الأقسام بعددها (أساور 1,044 …) | قاعدة | أقسام بترتيب وصورة، والعدد محسوب من المنشور للجمهور ده بس | بيانات حقيقية منقولة |
| 3 | «خصم حتى 50%» كقسم | عرض | مجموعة ذكية بشرط (نسبة الخصم ≥ كذا) مش قسم حقيقي | المنتج مايتنقلش من قسمه الأصلي |
| 4 | كارت المنتج: كود، لون، خامة، سعر قبل/بعد | قاعدة | DTO الكارت (القسم 05) | السعر قبل = سعر القطاعي، بعد = آخر سعر |
| 5 | صور كتير للمنتج | قاعدة | صور مرتبة، صورة لكل لون، WebP بمقاسات، نص بديل | — |
| 6 | مقاسات وألوان بسعر لكل واحد | قاعدة | متغيرات برصيد وسعر لكل واحد (القسم 04) | كلام فريق الموقع |
| 7 | كود المنتج o0653 | قاعدة | بحث بالكود مش حساس لحالة الحروف | البادئة صغيرة هنا وكبيرة في المخزن (N2515) — يتوحد جديد |
| 8 | المفضلة | قاعدة | مفضلة على السيرفر للمسجلين + دمج قايمة الزائر بعد الدخول | — |
| 9 | المقارنة | قاعدة | مواصفات المنتجات في رد واحد (لحد 4) | — |
| 10 | «الحقيبة» (السلة) | عرض | حساب السلة في السيرفر: الأسعار، العروض، الكوبون، النقاط، الهدية، الشحن | الحساب في المتصفح مابيتعتمدش |
| 11 | باقات الصور (+80 / +130 / +190) | عرض | باقات لكل منتج + رفع صور لكل قطعة (القسم 06) | العميل قال سعر لكل صورة (C6) |
| 12 | صفحة العروض — 5 أنواع | عرض | محرك العروض (القسم 07) | اللافتات من الـ API مش مكتوبة في الموقع |
| 13 | «العروض بتتجمع مع كود الخصم» | افتراض | إعداد التجميع + ترتيب الحساب (القسم 08) | محتاج قرار (Q4) |
| 14 | نقاط الولاء ومستوياتها | عرض | سجل نقاط، منح عند الاستلام، استبدال بكود (القسم 10) | الأرقام من اللوحة؛ المستويات الوسطانية أضعف جديد |
| 15 | فيديو شرح الولاء | قاعدة | رابط الفيديو من الإعدادات | العميل عايزه قرب آخر الصفحة S6 |
| 16 | المحفظة (رصيد 1,250 ج) | عرض | مقفولة لحد قرار (القسم 11) | مش في كلام العميل (C7) |
| 17 | «إدارة المحافظ» في الأدمن | عرض | — | نفس C7 |
| 18 | الشحن 2–5 أيام عمل | قاعدة | مدة وسعر لكل محافظة من اللوحة | — |
| 19 | تبديل/استرجاع خلال 14 يوم | قاعدة | صفحة السياسة + مدة الاسترجاع إعداد بيتحقق منه طلب المرتجع | — |
| 20 | خدمة العملاء على الواتساب | قاعدة | رقم الواتساب ورسالة البداية من الإعدادات | — |
| 21 | باب الجملة: خصم 25%–35% | خطأ | سعر جملة لكل منتج + شرائح (صفحة 04) | C4 |
| 22 | أقل كمية 3 قطع في الجملة، ومراجعة 48 ساعة | قاعدة | إعدادات | — |
| 23 | فورم التاجر وحالاته الأربعة | قاعدة | طلبات التجار + مراجعة (صفحة 04) | زودنا «مسودة» و«موقوف» |
| 24 | حساب «client VIP» — 14 طلب ⇒ نجمة | قاعدة | VIP تلقائي بالحدود | متوافق مع «+10 ⭐» |
| 25 | حساب «تاجر مميّز — VIP» بخصم 35% وتاج ونجمة | خطأ | — | خلط Prime وVIP (C5) |
| 26 | حسابات تجريبية (عادي، معلّق، مطلوب بيانات، مرفوض بسبب) | قاعدة | نفس الحالات بالظبط كحسابات اختبار على السيرفر التجريبي | حالات اختبار جاهزة |
| 27 | «مراجعة طلبات الجملة» في الأدمن | عرض | الشاشة الحقيقية في لوحتنا | لوحة الإدارة كلها عندنا |
| 28 | زرار تسجيل الدخول | عرض | دخول برقم التليفون/الإيميل + كود تحقق | العميل عايزه أبسط S6 |
الكتالوج والأقسام
الأعداد من الموقع التجريبي وقت المراجعة — بيانات منقولة من النظام الحالي، يعني نقل البيانات (Q14) لازم يحافظ عليها.
📂 القسم
- اسم، رابط (slug)، صورة، ترتيب، ظاهر/مخفي.
- قسم فرعي اختياري (مثلاً أساور ← أساور ستيل).
- العدد بيتحسب لكل جمهور (القطاعي مايشوفش منتجات الجملة).
🧲 المجموعات الذكية
- «خصم حتى 50%»، «جديد»، «الأكتر مبيعاً»، «عليه عرض».
- كل مجموعة = شرط بيتحسب (مش اختيار يدوي)، ومنتج ممكن يكون في كذا مجموعة.
- تتعمل من اللوحة بالشرط والترتيب.
🔎 البحث والفلاتر
- بحث بالاسم والكود (مش حساس للحروف الكبيرة/الصغيرة).
- فلاتر: القسم، السعر، اللون، الخامة، المقاس، عليه عرض، متاح.
- ترتيب: الأحدث، السعر، الأكتر مبيعاً، أكبر خصم.
المتغيرات — مقاس ولون وكل واحد بسعره
فريق الموقع أكّد إن كل مقاس أو لون ممكن يكون ليه سعر مختلف S7. ده معناه إن الرصيد والسعر والحجز كلهم على مستوى المتغير مش المنتج.
🧩 الشكل
لو المتغير مالوش سعر ← بياخد سعر المنتج. المنتج من غير ألوان ولا مقاسات = متغير واحد افتراضي.
📏 القواعد
- كود المتغير = كود المنتج + لاحقة افتراض — والباركود على المتغير (ده اللي بيتسكان في التقفيل).
- الكارت بيعرض «من {أقل سعر}» لو الأسعار مختلفة.
- اختيار اللون بيغيّر الصور والسعر والمتاح.
- مقاس «فري سايز» قيمة عادية في المقاس — والعرض «التانية بنص السعر» بيستخدمها.
- المتغير اللي رصيده صفر يظهر مشطوب «نفد» — مايستخباش عشان العميل يعرف إنه موجود.
في النظام الحالي فيه قايمة «المتغيرات» و«مجموعة أسعار البيع» S5. لازم نعرف: هل الكود المطبوع على الملصق للمنتج ولا لكل لون؟ ده بيأثر على التكويد والباركود ونقل البيانات.
بيانات كارت المنتج وصفحة المنتج
اللي الـ API بيرجّعه بالظبط. أي حقل مش في الجدول مابيطلعش للموقع (التكلفة، المخزن، الأماكن، سعر الجملة للقطاعي).
| الحقل | مثال | الكارت | صفحة المنتج | من فين |
|---|---|---|---|---|
code | o0653 | ✓ | ✓ | المنتج |
name, slug | أسورة ستيل مطلية | ✓ | ✓ | المنتج |
images | رئيسية + صورة عند المرور | 2 | الكل | المنتج/المتغير |
price | 149 | ✓ | ✓ | آخر سعر (العرض لو جوه تاريخه) |
compareAtPrice | 299 | ✓ | ✓ | سعر القطاعي قبل الخصم |
discountPercent | 50 | ✓ | ✓ | محسوب في السيرفر |
badges[] | جديد · خصم · عليه عرض | ✓ | ✓ | المجموعات + العروض |
offerLabel | «خد 2 هدية 1» | ✓ | ✓ | محرك العروض |
colors[] | دهبي، فضي، روز | دوائر | ✓ | المتغيرات |
material | ستانلس ستيل | اختياري | ✓ | المنتج |
sizes[] | S · M · فري سايز | — | ✓ | المتغيرات |
inStock / lowStock | متاح / «آخر 2 قطعة» | ✓ | ✓ | متاح الأونلاين − المحجوز |
isPhotoProduct, photoPackages[] | حتى 3 صور +80 | علامة | ✓ | إعداد المنتج |
rating, reviewsCount | 4.8 (37) | ✓ | ✓ | التقييمات المعتمدة |
description, specs[] | الطول 45 سم… | — | ✓ | المنتج |
isWishlisted | true | ✓ | ✓ | للمسجل بس |
related[] | من نفس القسم/الطقم | — | ✓ | محسوب |
seo | عنوان، وصف، صورة المشاركة | — | ✓ | المنتج (أو تلقائي) |
منتج الصور (Customization)
منتج بيفتح ويتحط جواه صور؛ جنبه زرار «Upload photo»، والعميل يرفع صوره، وفلوكة تطبعها وتركّبها S4. كل منتج بيشيل عدد مختلف: واحد 11 صورة، وواحد صورتين، وواحد 4، وواحد صورة.
التعارض C6: سعر لكل صورة ولا باقات؟
| المصدر | اللي اتقال | ملاحظة |
|---|---|---|
| العميل (فيديو أغسطس) S4 | المنتج بـ 100 ج، الصورة بـ 5 ج، المنتج يشيل لحد 11 صورة. «رفع 10 صور ← 125» | 100 + 10×5 = 150 مش 125. الـ 125 تتظبط لو أول 5 صور داخلين في السعر: 100 + (10−5)×5 = 125 استنتاج |
| الموقع التجريبي S7 | بدون صور / حتى 3 صور +80 / حتى 6 +130 / حتى 10 +190 — والفريق يرتب الصور | أسعار أعلى بكتير من 5 ج للصورة — غالباً منتج تاني أو تسعير مختلف |
✓ اقتراحنا — نموذج واحد يغطي الاتنين افتراض
كل منتج صور بيختار طريقة تسعير من اتنين:
- باقات: «حتى N صور بـ +X» (زي الموقع). ممكن باقة «بدون صور».
- سعر للصورة: «أول K صور داخلين، وكل صورة زيادة بـ Y، لحد أقصى M» (زي كلام العميل: K=5، Y=5، M=11).
الاتنين بيتحسبوا في نفس محرك الأسعار كـ «إضافة على السطر»، والعميل يقرر لكل منتج.
🧮 قطعتين من نفس المنتج (Q2)
- كل قطعة ليها صورها وباقتها — السطر في الطلب فيه «وحدات»، كل وحدة ليها صور.
- اختيار «نفس الصور للكل» بيرفع مرة واحدة ويكررها.
- سعر الإضافة بيتحسب لكل وحدة: قطعتين بباقة +80 = +160.
- الإيصال بيطبع «قطعة 1 من 2 — 3 صور».
شكل اختيار الباقة ورفع الصور (مسودة لفريق الموقع)
ميدالية صور قلب — P0911
+80حتى 6
+130حتى 10
+190
📤 حدود الرفع
- الصيغ: JPG / PNG / HEIC (بتتحول) / WebP.
- حجم الصورة: حتى 15 ميجا، ومجموع القطعة حتى 100 ميجا (الرقم اللي العميل ذكره) — من الإعدادات.
- تحذير لو الدقة أقل من حد معيّن (مثلاً 800 بكسل): «ممكن تطلع مش واضحة في الطباعة» — تحذير مش منع.
- رفع على أجزاء (لو النت ضعيف) واستكمال.
🔒 الخصوصية
- صور العملاء خاصة: مش بروابط عامة، ومحدش يشوفها غير فريق الصور.
- بتتمسح تلقائياً بعد X يوم من الاستلام (افتراضي 60) — إعداد.
- الصور اللي اترفعت ومااتعملش بيها طلب بتتمسح بعد 48 ساعة.
🖨️ خطوة الطباعة
- أي طلب فيه منتج صور يروح قسم «طلبات الصور» في التجهيز — حتى لو معاه قطع عادية S6.
- زرار «تحميل الصور» = ملف مضغوط مرتب:
FL-260412/قطعة-1/01.jpg. - علامة «اتطبعت» إجبارية قبل ما محطة التقفيل تقبل الطلب.
- مشكلة في صورة ← استثناء + اللمبة + خدمة العملاء تطلب صورة تانية.
العروض الخمسة — قاعدة دقيقة لكل واحد
صفحة العروض في الموقع التجريبي فيها 5 أنواع بتتطبق تلقائياً في السلة من غير كود S7. الشكل موجود — المنطق ده اللي هنبنيه. كل عرض ليه: نطاق، شرط، نتيجة، تاريخ بداية ونهاية، قناة (قطاعي افتراضياً)، وأولوية.
القاعدة
كل 3 قطع من النطاق: الأرخص فيهم ببلاش. 6 قطع ← 2 ببلاش.
مثال
الداتا
scope (قسم/منتجات/مجموعة) · buyQty=2 · getQty=1 · getDiscount=100% · maxRepeats
حالات طرفية
- نفس الأسورة 3 مرات ← واحدة ببلاش عادي.
- منتج عليه خصم أصلاً: يدخل ولا لأ؟ (إعداد «يشمل المخفّض»).
- مرتجع قطعة: الخصم يتوزع على التلاتة بالنسبة، فالمسترد = اللي اتدفع فعلاً.
القاعدة
كل قطعتين من النطاق: الأرخص بخصم 50%. التالتة بسعرها، والرابعة بنص.
مثال
الداتا
scope = خواتم + شرط المقاس «فري سايز» · every=2 · discount=50% على الأرخص
حالات طرفية
- النطاق بصفة (المقاس) مش بقسم — المحرك لازم يدعم فلتر بالصفات.
- عدد فردي ← آخر قطعة بسعرها.
- الأرخص ولا الأغلى؟ العرف = الأرخص؛ إعداد.
القاعدة
أي 3 قطع من النطاق بسعر ثابت 200. لو أكتر من 3: الباقة على أغلى 3 (الأفضل للعميل) والباقي بسعره.
مثال
الداتا
scope · bundleQty=3 · bundlePrice=200 · maxRepeats
حالات طرفية
- لو مجموع التلاتة أقل من 200 (60+55+50=165) ← العرض مايتطبقش، عشان مايزودش السعر.
- 6 قطع ← باقتين.
- مرتجع: الـ 200 تتوزع على التلاتة بنسبة أسعارهم.
القاعدة
لو قيمة المنتجات (بعد العروض، قبل الكوبون والشحن — افتراض) ≥ 800 ← منتج هدية معيّن يتضاف تلقائياً بسعر 0.
مثال
الداتا
threshold=800 · giftVariantId · perOrder=1 · base (قبل/بعد العروض)
حالات طرفية
- السلة نزلت تحت 800 ← الهدية تتشال.
- الهدية خلصت من المخزن ← العرض يقف تلقائياً ويظهر «انتهت الهدايا».
- مرتجع خلّى الطلب تحت 800 ← الهدية ترجع أو قيمتها تتخصم؟ قرار.
- الهدية بتتحجز من المخزن زي أي قطعة.
القاعدة
طقم = منتجات محددة بالاسم (مثلاً سلسلة + أسورة + حلق). لو الثلاثة في السلة ← المجموع 690.
مثال
الداتا
items[] (منتج + كمية) · bundlePrice=690 · صفحة الطقم بزرار «أضف الطقم»
حالات طرفية
- العميل يختار لون كل قطعة جوه الطقم.
- قطعة منه خلصت ← الطقم كله «غير متاح».
- السطور بتفضل منفصلة في الطلب، والخصم يتوزع بالنسبة (كل قطعة × 0.798) — عشان المرتجع والتجميع بالمكان.
- عرض واحد لكل قطعة — لو قطعة تنفع لعرضين، المحرك بيختار الأفضل للعميل.
- العروض للقطاعي بس افتراضياً؛ الجملة ليها أسعارها.
- تاريخ بداية ونهاية بالساعة، وجوب كل 5 دقايق يفعّل ويقفل.
- الخصم بيتحفظ على كل سطر (اسم العرض وقيمته) — التقارير والمرتجع بيعتمدوا عليه.
- نسخة من قاعدة العرض بتتحفظ مع الطلب — لو العرض اتعدل بعدين الطلب القديم مايتغيرش.
- اللافتة («خد 2 هدية 1») وصورة العرض من الـ API.
ترتيب الخصومات والتجميع (Q4)
الموقع التجريبي كاتب «العروض بتتجمع مع كود الخصم». ده قرار تجاري كبير — هنا الترتيب الافتراضي اللي هنبني عليه، ومثال محسوب، والحتة اللي محتاجة كلمة من العميل.
آخر سعر لكل متغير (العرض المؤقت لو جوه تاريخه).
باقة كل وحدة — مابيتعملهاش خصم افتراض.
عرض واحد لكل قطعة، الأفضل للعميل.
شرط الـ 800 على الناتج بعد العروض.
كوبون أو كود نقاط — بحده الأدنى والأقصى (إعداد يسمح باتنين).
من المحافظة، إلا لو الكود «شحن مجاني».
على المدفوع في المنتجات — «منتظرة» لحد الاستلام.
مثال محسوب — سلة واحدة فيها 3 عروض وكوبون
| السطر | قبل | العرض | بعد |
|---|---|---|---|
| 3 أساور (150 + 120 + 90) | 360 | خد 2 هدية 1 (−90) | 270 |
| 2 خاتم فري سايز (180 + 140) | 320 | التانية بنص السعر (−70) | 250 |
| 3 حلقان (95 + 85 + 70) | 250 | 3 بـ 200 (−50) | 200 |
| المنتجات بعد العروض | 930 | −210 | 720 |
| هدية فوق 800؟ | 720 < 800 ← مفيش هدية + رسالة «فاضلك 80 ج» (لو الأساس قبل العروض = 930 كانت هتتضاف ← لازم قرار) | ||
كوبون FLOUKA10: 10% بحد أقصى 100، حد أدنى 500 | 720 ≥ 500 ✓ ← 10% = 72 | −72 | |
| الشحن (القاهرة — مثال) | من جدول المحافظات | +70 | |
| الإجمالي | 718 ج | ||
| نقاط مكتسبة | 648 ÷ 10 = 64 نقطة منتظرة — تتاح عند «تم الاستلام» | ||
- العروض + الكوبون بيتجمعوا؟ (الموقع: آه)
- الكوبون + كود النقاط مع بعض في نفس الطلب؟ (افتراضنا: كود واحد)
- شرط الهدية على السعر قبل العروض ولا بعدها؟ (افتراضنا: بعدها)
- المنتجات المخفّضة أصلاً تدخل في العروض؟ (افتراضنا: لأ — إعداد لكل عرض)
كل نقطة من دول إعداد واحد في اللوحة، مش كود. والحساب كله في POST /store/cart/quote — الموقع بيعرض النتيجة بس، وأي فرق بين اللي اتعرض واللي اتحسب وقت الطلب بيرجع رسالة «السعر اتغير» بدل ما يعمل طلب غلط.
الكوبونات
العميل مااتكلمش عن الكوبونات بالتفصيل، بس الموقع فيه «كود الخصم»، وده من الإضافات القياسية عندنا S8. كل الحقول من اللوحة.
| الحقل | الاختيارات | مثال |
|---|---|---|
| الكود | يدوي أو توليد تلقائي (دفعة أكواد فريدة) | FLOUKA10 |
| النوع | نسبة % · مبلغ ثابت · شحن مجاني | 10% |
| أقصى خصم | للنسبة بس | 100 ج |
| حد أدنى للطلب | على المنتجات بعد العروض | 500 ج |
| أول طلب بس | أيوه / لأ (بالتليفون، مش بالحساب بس) | أيوه |
| عدد الاستخدامات الكلي | رقم أو مفتوح | 300 |
| استخدامات لكل عميل | رقم | 1 |
| النطاق | الكل · أقسام · منتجات · مجموعات — مع استثناءات | كله ماعدا «خصم حتى 50%» |
| الجمهور | الكل · مسجلين · VIP بمستوى · عملاء محددين | VIP ⭐ وفوق |
| القناة | قطاعي · جملة · الاتنين | قطاعي |
| المحافظات | الكل أو محافظات معينة (للشحن المجاني) | بورسعيد |
| المدة | من / إلى بالساعة | 1–15 نوفمبر |
| بيتجمع مع العروض؟ | أيوه / لأ (لكل كوبون) | أيوه |
| الحالة والإحصائيات | شغال/موقوف + عدد الاستخدام + إجمالي الخصم + المبيعات | — |
الكوبون بيتحسب استخدام عند إنشاء الطلب، ويرجع لو الطلب اتلغى قبل الشحن. رسايل الرفض واضحة: «الكود خلص» / «الحد الأدنى 500 ج» / «الكود لأول طلب بس».
نقاط الولاء
من الموقع التجريبي: نقطة لكل 10 ج، للمسجلين بس، وأربع مستويات استبدال، وفيديو شرح S7. كل الأرقام هتبقى من اللوحة.
العميل اللي معاه 800 نقطة يكسب أكتر لو استبدل مستوى الـ 200 أربع مرات (4 × 50 = 200 ج) بدل مستوى الـ 800 (أقصى 150 ج). ونفس الكلام في الـ 400: كودين بـ 100 ج أحسن من شحن مجاني. يعني المستويين الوسطانيين مش هيتستخدموا. اقتراحات للعميل: حد أدنى للطلب لكود الـ 50، أو رفع قيمة المستويات الوسطانية، أو إن مستوى الـ 200 يتاخد مرة في الشهر.
➕ الكسب
- نقطة لكل 10 ج من المدفوع في المنتجات بعد العروض والكوبون — من غير الشحن.
- إضافة الصور بتكسب نقاط؟ افتراض: لأ
- للمسجلين في القطاعي بس؛ الجملة مابتكسبش افتراض.
- النقاط بتتسجل «منتظرة» مع الطلب، وبتتاح عند «تم الاستلام» — مش عند الطلب ولا الشحن.
- الطلب اتلغى أو رجع كله ← النقاط المنتظرة تتلغي.
➖ الاستبدال والسحب
- العميل يختار مستوى ← النقاط تتخصم ← كود شخصي لمرة واحدة صالح 30 يوم (إعداد).
- الكود انتهى من غير استخدام ← النقاط ترجع افتراض.
- مرتجع جزئي بعد الاستلام ← سحب نقاط قطعة المرتجع بالنسبة. لو الرصيد مايكفيش ← الرصيد يبقى بالسالب ويتقفل الاستبدال لحد ما يتعوض.
- انتهاء النقاط: سؤال (Q) — اقتراح 12 شهر من الكسب، مقفول افتراضياً.
- تعديل يدوي من اللوحة بسبب مكتوب (صلاحية).
سجل النقاط — زي سجل المخزون
| الحركة | الأثر | بتحصل إمتى |
|---|---|---|
| كسب منتظر | + منتظر | إنشاء الطلب |
| إتاحة | − منتظر / + متاح | «تم الاستلام» |
| إلغاء | − منتظر | إلغاء أو مرتجع كامل قبل الإتاحة |
| استبدال | − متاح | العميل اختار مستوى (ويتولد كود) |
| رجوع كود منتهي | + متاح | جوب يومي |
| سحب مرتجع | − متاح (ممكن سالب) | قرار المرتجع |
| انتهاء | − متاح | لو الانتهاء اتفعّل |
| تعديل يدوي | ± | من اللوحة بسبب |
الفيديو التعريفي: رابط من الإعدادات، ويظهر قرب آخر الصفحة الرئيسية زي ما العميل طلب S6. ومستويات الاستبدال دي مش هي VIP — VIP بعدد الطلبات (صفحة 04).
المحفظة — مقفولة لحد القرار (C7 · Q3)
الموقع التجريبي فيه رصيد محفظة 1,250 ج وصفحة «إدارة المحافظ» في الأدمن، لكن العميل ماطلبهاش في أي مصدر. مش هنبنيها في المرحلة الأولى.
🔒 ليه مقفولة
- مش في كلام العميل (لا الميتنج ولا الجروب).
- المحفظة = فلوس للعميل عندك — محتاجة سياسة (سحب؟ صلاحية؟) ومراجعة حسابات.
- نقاط الولاء والكوبونات بيغطوا معظم استخدامات «الرصيد».
- فريق الموقع يخبي الجزء ده لحد القرار.
📋 لو العميل قرر يفتحها — هتحتاج
- سجل محفظة إلحاقي (زي النقاط) بكل حركة ومصدرها.
- مصادر الرصيد: استرداد مرتجع بدل الفلوس، تعويض شكوى، شحن يدوي من الإدارة.
- الاستخدام: جزء من الدفع في السلة، مع الكاش عند الاستلام.
- هل الرصيد بيتسحب كاش؟ وهل ليه صلاحية؟
- صلاحية حساسة لأي إضافة يدوية + تقرير أرصدة.
المفضلة والمقارنة
موجودين في الموقع قاعدة — اللي علينا يخليهم يشتغلوا على أكتر من جهاز ويبقوا مفيدين للتسويق.
❤️ المفضلة
- على السيرفر للمسجل (تتشاف من أي جهاز).
- الزائر: في المتصفح، وتتدمج أول ما يسجل دخول.
- القطعة نفدت ← تفضل في القايمة بعلامة «نفد».
⚖️ المقارنة
- لحد 4 منتجات.
- رد واحد بالمواصفات: السعر، الخامة، الألوان، المقاسات، الطول/الوزن، التقييم.
- من غير حفظ على السيرفر — مش محتاجة.
📣 استخدام تسويقي (لاحقاً)
- «المنتج اللي في مفضلتك نزل سعره» على الواتساب.
- «رجع المخزون» للمنتج اللي كان نافد.
- تقرير: أكتر المنتجات في المفضلة ومااتشترتش.
الشحن بالمحافظة والاسترجاع
الشحن بيتحسب تلقائياً من قايمة المحافظات وقابل للتعديل في إضافة الطلب S3، والموقع كاتب 2–5 أيام عمل و14 يوم استرجاع S7.
| المحافظة | السعر | المدة | شركة الشحن | الدفع عند الاستلام | قسم التجهيز |
|---|---|---|---|---|---|
| بورسعيد | من اللوحة | 1–2 يوم | مندوب داخلي / شركة | ✓ | بورسعيد |
| القاهرة | من اللوحة | 2–3 أيام | شركة (أ) | ✓ | المحافظات |
| أسوان | من اللوحة | 4–5 أيام | شركة (ب) | ✓ | المحافظات |
| … الـ 27 محافظة — كل صف: السعر، المدة من/إلى، الشركة الافتراضية، الدفع عند الاستلام مسموح؟، متاحة؟ | |||||
🚚 قواعد الشحن
- السعر في الطلب = صورة من الجدول وقت الطلب.
- شحن مجاني بكود (ولاء أو كوبون) أو حد أدنى (إعداد اختياري).
- منطقة/مدينة جوه المحافظة بسعر مختلف — لو العميل محتاجها (سؤال).
↩️ الاسترجاع والتبديل
- المدة (14 يوم) إعداد بيتحسب من «تم الاستلام».
- طلب الاسترجاع من «طلباتي» بسبب وصور ← يروح خدمة العملاء ← دورة المرتجع (صفحة 03).
- المرتجع مايرجعش المخزون إلا بعد فحص وقرار (R7).
💳 الدفع (Q15)
- كاش عند الاستلام.
- إنستاباي / محافظ بتحويل يدوي + صورة الإيصال ومراجعة.
- بوابة دفع إلكتروني مرحلة لاحقة (واجهة جاهزة).
الإضافات القياسية اللي بنضيفها دايماً
مش في كلام العميل بالاسم، بس أي متجر جاد محتاجها، وكلها بتتدار من اللوحة S8. الموقع بيعرض، وإحنا بنوفر المحتوى والـ API.
| الإضافة | اللي في اللوحة | اللي الموقع بيعمله |
|---|---|---|
| صفحات المحتوى: الشروط والأحكام، الخصوصية، سياسة الإلغاء والاسترجاع، الشحن، من نحن (فلوكة من بورسعيد من 2014) | محرر نص عربي/إنجليزي + تاريخ آخر تعديل | صفحة لكل واحدة + لينكات في الفوتر |
| الأسئلة الشائعة | أسئلة بأقسام (الطلب، الشحن، الاسترجاع، الصور، الجملة) وترتيب | صفحة + أسئلة القسم في صفحة المنتج |
| بيانات التواصل والسوشيال | واتساب، تليفون، عنوان المحل، المواعيد، فيسبوك، إنستجرام، تيك توك | الفوتر وصفحة التواصل وزرار الواتساب العائم |
| صندوق «تواصل معانا» | رسايل بحالة (جديد/اتقرت/اترد) ومين رد | فورم بسيط (اسم، تليفون، رسالة) |
| الشكاوى مربوطة بالطلبات | شكوى برقم الطلب، نوع، مسؤول، مهلة رد، حل — زي قايمة «الشكاوى» في النظام الحالي S5 | «عندي مشكلة في الطلب» من صفحة الطلب |
| البانرات والسلايدر | صورة أو فيديو، لينك، ترتيب، من/إلى، موبايل/ديسكتوب | الهيرو (فيديو) والبانرات |
| شريط إعلان علوي | نص + لينك + مدة | «شحن مجاني فوق …» |
| التقييمات بموافقة | من اشترى واستلم بس؛ نجوم + نص + صورة؛ اعتماد أو رفض؛ رد فلوكة | نجوم في الكارت وقايمة في المنتج |
| SEO | عنوان ووصف لكل منتج/قسم/صفحة، روابط، خريطة الموقع (من غير منتجات الجملة وPrime)، صورة المشاركة | يحطها في الصفحات |
| بيكسلات التحليلات | أكواد Meta Pixel وTikTok Pixel وGoogle Analytics وTag Manager من الإعدادات | يحمّلها ويبعت الأحداث (إضافة للسلة، طلب) |
| النشرة / الاشتراك | قايمة مشتركين بموافقة + تصدير | فورم في الفوتر |
| وضع الصيانة | تشغيل/إيقاف + رسالة | صفحة «راجعين قريب» |
صفحة الخصوصية بتغطي: البيانات اللي بنجمعها (اسم، تليفون، عنوان، صور منتج الصور)، بنستخدمها في إيه، مدة الاحتفاظ، ومين بيشوفها (شركة الشحن بتشوف الاسم والعنوان والتليفون بس) — بما يتماشى مع قانون حماية البيانات الشخصية المصري. النص النهائي مسؤولية العميل.
الـ API اللي الموقع محتاجه مننا
مجمّع حسب الشاشة. البادئات زي ما في صفحة المعمارية: /public لأي حد، /store للقطاعي، /merchant للجملة (صفحة 04)، /auth للدخول.
| المجموعة | الطلبات | ملاحظات |
|---|---|---|
| الإعدادات العامة | GET /public/config · GET /public/governorates | الواتساب، السوشيال، فيديو الولاء، الهيرو، الولاء شغال؟، المحافظات بأسعارها ومددها |
| المحتوى | GET /public/pages/{slug} · /public/faq · /public/banners · /public/announcement | كاش قصير |
| الكتالوج | GET /store/categories · /store/collections/{slug} · /store/products?… · /store/products/{slug} · /store/search/suggest?q= | فلاتر، ترتيب، ترقيم { items, page, pageSize, total, hasMore } |
| العروض | GET /store/offers · GET /store/bundles/{slug} | العروض الشغالة ولافتاتها والأطقم |
| السلة | POST /store/cart/quote · GET/PUT /store/cart | الحساب الكامل؛ سلة على السيرفر للمسجل |
| منتج الصور | POST /store/uploads/photos · DELETE /store/uploads/photos/{id} | رفع على أجزاء، تحذير الدقة، ربط بوحدة السطر |
| الطلب | POST /store/orders · GET /store/orders · GET /store/orders/{code} · POST /store/orders/{code}/return-request | Idempotency-Key؛ تتبع للزائر برقم الطلب + التليفون |
| الحساب | POST /auth/otp/send · /auth/otp/verify · /auth/refresh · GET/PUT /store/me · /store/addresses | دخول بالتليفون + كود |
| المفضلة والمقارنة | GET/POST/DELETE /store/wishlist · POST /store/wishlist/merge · GET /store/compare?ids= | — |
| الولاء | GET /store/loyalty · GET /store/loyalty/ledger · POST /store/loyalty/redeem | الرصيد المتاح والمنتظر، المستويات، توليد الكود |
| التقييمات | GET /store/products/{slug}/reviews · POST /store/reviews | للي استلم بس؛ بتظهر بعد الموافقة |
| التواصل | POST /public/contact · POST /store/complaints · POST /public/newsletter | حد معدل ضد السبام |
لو فريق الموقع عنده شكل رد معيّن، بيتكتب في العقد ونلتزم بيه حرفياً. غير كده العقد بيتصدّر openapi.json من أول أسبوع، ومعاه سيرفر تجريبي ببيانات حقيقية منقولة وحسابات اختبار لكل حالة (عادي، VIP، تاجر بكل حالاته، Prime).
أسئلة مفتوحة للعميل
وجنب كل سؤال الافتراض اللي هنبني بيه لحد الرد.
| # | السؤال | افتراضنا |
|---|---|---|
| Q2 | قطعتين من منتج صور: صور لكل قطعة؟ | أيوه + «نفس الصور للكل» |
| C6 | منتج الصور: باقات ولا سعر للصورة؟ وإزاي 10 صور = 125؟ | الاتنين متاحين لكل منتج؛ غالباً أول 5 صور داخلين |
| Q3 | المحفظة مطلوبة؟ | لأ في المرحلة الأولى |
| Q4 | العروض + الكوبون + النقاط بيتجمعوا؟ | العروض + كود واحد (كوبون أو نقاط) |
| S1 | شرط هدية الـ 800 قبل العروض ولا بعدها؟ | بعد العروض وقبل الكوبون |
| S2 | المنتجات المخفّضة (خصم حتى 50%) تدخل في العروض والكوبونات؟ | لأ افتراضياً — إعداد لكل عرض/كوبون |
| S3 | قيم مستويات الولاء (الوسطانيين أضعف من الأول) | نبني بأرقام الموقع، وننبه العميل |
| S4 | النقاط بتنتهي؟ | مقفول؛ لو اتفعل 12 شهر |
| S5 | النقاط على إضافة الصور؟ وعلى الجملة؟ | لأ ولأ |
| S6 | الطلب كزائر (من غير تسجيل) مسموح؟ | أيوه بالتليفون؛ النقاط للمسجلين بس |
| Q15 | الدفع الإلكتروني على الموقع؟ | كاش + تحويل يدوي؛ بوابة لاحقاً |
| S7 | الكود على المنتج ولا لكل لون؟ وتوحيد شكل البادئة (o0653 / N2515) | كود منتج + لاحقة لكل متغير؛ البحث مش حساس للحروف |
| S8 | «فلوكه» ولا «فلوكة» في كلمة اللوجو؟ | زي ما العميل كتب لحد التأكيد |