
انقل خمس سنوات من متجرك إلى منصة جديدة دون أن تفقد رابطاً واحداً ولا طلباً واحداً
تجارة الإلكترونيات · موقع ويب
خمس سنوات من متجر إلكترونيات روماني — 315 منتجاً و1,183 طلباً و1,792 صورة — انتقلت من ووكومرس إلى Next.js وPostgreSQL، مع الدفع بالبطاقة ولوحة تحكم خاصة به.
- المجال
- تجارة الإلكترونيات
- المنصّة
- موقع ويب
- مباشر
- toptronics.ro
01 — المشكلة
كان توبترونيكس يبيع في رومانيا منذ أبريل 2021 — 315 منتجاً و288 حساب عميل و1,191 طلباً — على متجر ووكومرس مبني داخل قالب جاهز وأداة بناء صفحات. وكل ما جعل المتجر يعمل جعل تغييره بطيئاً أيضاً: كان محتوى المنتجات محبوساً داخل أكواد أداة البناء، فلا يمكن تغيير شكله دون تحرير كل منتج على حدة؛ ولم تكن هناك أي إضافة لتحسين محركات البحث، فكان حضور المتجر في البحث كله قائماً على روابط /produse/ القديمة؛ أما لوحة الإدارة فكانت لوحة ووردبريس، بمخزون وطلبات ووسائط وعملاء موزّعين على إضافات لكل منها تصوّرها الخاص للبيانات. واقتراح تغيير المنصة سهل، والنجاة منه صعبة — فخمس سنوات من ترتيب البحث تعيش على روابط لا تملكها المنصة الجديدة، وسجلّ الطلبات هو الأثر الوحيد لهوية العملاء.
02 — الاستراتيجية
اعتبر الترحيل هو المُنتَج نفسه، لا الخطوة التي تسبقه. أعد بناء الواجهة ولوحة الإدارة على منصة واحدة محكمة الأنواع، لتتشارك أخيراً الكتالوج والطلبات والإدارة قاعدة بيانات واحدة؛ وانقل كل منتج وطلب وعميل ومراجعة وصورة بأداة يمكن تشغيلها والتحقق منها والتخلص منها وإعادة تشغيلها، لا بسكربت يُنفَّذ مرة واحدة؛ وانشر تحويلاً لكل رابط قديم كي تنتقل خمس سنوات من ترتيب البحث مع الكتالوج. ثم ابنِ للسوق الذي يشتري فعلاً: واجهة باللغة الرومانية وحدها، ودفع بالبطاقة عبر البوابة التي يعرفها المتسوق الروماني، والدفع عند الاستلام — الوسيلة التي تقف خلف 1,137 من أصل 1,191 طلباً سابقاً — بوصفه مساراً أساسياً في الدفع لا بديلاً احتياطياً.
03 — ما الذي بنيناه
الترحيل حزمة قائمة بذاتها، لا سكربت. يقرأ نسخة ووكومرس الاحتياطية عبر قاعدة بيانات محلية مؤقتة، ويفهرس كل كيان في جدول ربط كي يتخطى أي تشغيل جديد ما تم نقله فعلاً، ويكتب على دفعات ضمن معاملات، وينتهي بأمر تحقق يقارن عدد الصفوف في المصدر بعددها في الوجهة، ويفحص العلاقات التي تنكسر فعلاً — منتج بلا صورة، ومتغيّر بلا مخزون، وطلب بلا بنود، وروابط مكررة — ويطبع عيّنات «قبل وبعد» من منتجات حقيقية. وقد جرى تمرين التشغيل الإنتاجي كاملاً على نسخة قابلة للإتلاف أولاً. وفوق هذه البيانات تقوم واجهة Next.js — صفحات الفئات والعلامات والمنتجات، وبحث ⌘K، وقائمة المفضلة، والسلة، والشراء دون حساب، وتتبّع الطلب برقمه والبريد الإلكتروني — ولوحة إدارة تغطي 37 جدولاً: المنتجات والمخزون وحركاته، والطلبات، والعملاء، والكوبونات، واللافتات، وأقسام الصفحة الرئيسية، ومراجعة التقييمات، وتذاكر الدعم، وطلبات الجملة، ومكتبة وسائط على Cloudflare R2، وإعدادات المتجر، وسجلّ تدقيق. أما الدفع بالبطاقة فيمرّ عبر صفحة NETOPIA المستضافة؛ ولا يُعلَّم الطلب مدفوعاً إلا بإشعار موقَّع يتم التحقق منه، وإذا لم يكن حساب التاجر مكتمل الإعداد تختفي وسائل الدفع الإلكتروني من صفحة الدفع بدل أن يقبض الموقع مبلغاً لا يستطيع تأكيده.
(✦) — المُخرَجات
- واجهة متجر باللغة الرومانية على Next.js — الصفحة الرئيسية وصفحات الفئات والعلامات والمنتجات والعروض، وبحث ⌘K، وقائمة المفضلة، والسلة، وصفحة الدفع، وتتبّع الطلب، وصفحة الجملة، والدعم، والصفحات القانونية.
- أداة ترحيل من ووكومرس إلى PostgreSQL مبنية كحزمة مستقلة: 315 منتجاً بـ33 متغيّراً، و30 فئة، و288 عميلاً، و1,183 طلباً تحمل 1,234 بنداً و2,804 حدثاً في خط الزمن، ومراجعات المنتجات، و1,792 ملف وسائط — مع ربط معرّف كل كيان كي يبقى التشغيل قابلاً للتكرار دون ازدواج.
- خريطة تحويلات من 705 قواعد مدمجة في البناء: 315 رابط منتج و328 وسماً و30 فئة و14 صفحة بتحويل 301، و18 رابطاً تجريبياً مهجوراً بردّ 410 بدل تركها صفحات 404 ناعمة.
- مدفوعات NETOPIA — صفحة بطاقة مستضافة مع التحقق ثلاثي الأبعاد، وتسوية لا تُقيَّد إلا من إشعار موقَّع ومُتحقَّق منه، إلى جانب الدفع عند الاستلام والتحويل البنكي.
- شراء دون حساب مع البحث عن الطلب برقمه والبريد الإلكتروني: 1,176 من أصل 1,191 طلباً سابقاً تمت دون حساب، فلم يُجعَل إنشاء الحساب ثمناً للشراء.
- لوحة إدارة فوق 37 جدولاً — المنتجات والمخزون وحركاته، والطلبات، والعملاء، والكوبونات، واللافتات، وأقسام الصفحة الرئيسية، ومراجعة التقييمات، وتذاكر الدعم، وطلبات الجملة، والوسائط، وإعدادات المتجر، وسجلّ تدقيق يبيّن من غيّر ماذا.
- تخزين كل الصور على Cloudflare R2، مع إعادة كتابة روابط المقاسات القديمة إلى الأصول الأصلية كي تعيد الواجهة الجديدة التحجيم من مصدر نظيف.
- علامة حماية المستهلك ANPC وشعار NETOPIA / Visa / Mastercard في التذييل، مع وثائق الشروط والخصوصية والشحن والإرجاع وملفات تعريف الارتباط التي تطلبها مراجعة التجار في رومانيا.
- واجهة REST مستقلة على قاعدة بيانات PostgreSQL والجلسات نفسها، ليجد تطبيق الجوال المستقبلي خلفيةً جاهزة من يومه الأول.
(✦) — التقنيات المستخدمة
11
التقنيات
- Next.js
- React
- TypeScript
- tRPC
- Drizzle ORM
- PostgreSQL
- Better Auth
- Tailwind CSS
- Cloudflare R2
- NETOPIA Payments
- Vercel
04 — النتيجة
صار المتجر يعمل على قاعدة بيانات واحدة وقاعدة كود واحدة: الكتالوج الذي تعرضه الواجهة هو نفسه الذي تحرّره لوحة الإدارة، و705 قواعد تحويل تُبقي كل رابط منتج وفئة ووسم وصفحة قديم يصل إلى موضعه الجديد بدل صفحة 404. وعاد محتوى المنتجات نصاً حقيقياً بدل أكواد أداة البناء، فيمكن تحرير وصف دون فتح أي أداة. والعملاء الذين اشتروا دون حساب — وهم شبه الجميع — ما زالوا يجدون طلباتهم برقم الطلب والبريد الإلكتروني. والدفع بالبطاقة والدفع عند الاستلام والتحويل البنكي تقف جنباً إلى جنب في صفحة الدفع، مع علامات حماية المستهلك والدفع التي تطلبها مراجعة التجار في رومانيا. وإلى جانب تطبيق الويب تعمل واجهة REST مستقلة على قاعدة البيانات والجلسات نفسها، كي يصدر تطبيق الجوال لاحقاً دون بناء خلفية ثانية له.
(✦) — الأسئلة الشائعة
أسئلة، بإجابات.
كم يستغرق ترحيل متجر كهذا؟
لكتالوج بهذا الحجم — بضع مئات من المنتجات وخمس سنوات من الطلبات ومكتبة وسائط — احسب 8–12 أسبوعاً من الانطلاق حتى الإطلاق. ونادراً ما يكون البناء هو ما يحدد الإيقاع، بل تسوية البيانات القديمة، لأن لكل متجر عقداً كاملاً من الاستثناءات الخاصة به. ونحن نجري تمرين الترحيل كاملاً على نسخة قابلة للإتلاف قبل أي كتابة على قاعدة البيانات الحقيقية.
كم تبلغ تكلفة مشروع كهذا؟
تعتمد على حجم الكتالوج، وكم من البيانات القديمة يحتاج إلى إعادة تشكيل، وكم تحتاج من لوحة الإدارة في اليوم الأول. أرسل لنا وصفاً موجزاً للمشروع وستحصل على عرض سعر ثابت ومُفصّل خلال 24 ساعة — دون التزام ودون رسوم استكشاف.
هل سنفقد ترتيبنا في جوجل عند تغيير الروابط؟
فقط إذا لم يخطط أحد لذلك. كل رابط قديم يحصل على قاعدة تحويل قبل الإطلاق — وهنا كانت 705 قواعد تغطي كل منتج وفئة ووسم وصفحة محتوى بتحويل 301، مع ردّ 410 على الصفحات التجريبية المهجورة بدل تركها صفحات 404 ناعمة. وخريطة التحويلات مُولَّدة من الترحيل نفسه لا مكتوبة يدوياً، فلا يمكن أن يسقط منتج انتقل من القائمة.
ماذا يحدث لعملائنا وطلباتهم وكلمات مرورهم الحالية؟
ينتقل العملاء والعناوين وسجلّ الطلبات وخط زمن كل طلب وقوائم المفضلة والمراجعات، وتبقى مرتبطة ببعضها. وكلمات المرور هي الشيء الوحيد الذي لا ينتقل: يخزّنها ووردبريس بصيغة تشفير لا يستطيع نظام مصادقة حديث التحقق منها، فتصل الحسابات مع إعادة تعيين كلمة المرور عند أول دخول بدل إغلاقها بصمت. أما كل ما يبحث عنه العميل العائد — طلباته القديمة وعنوانه وقائمته — فموجود بالفعل.
هل يمكنه قبول الدفع بالبطاقة في سوقنا؟
نعم، عبر البوابة التي يثق بها سوقك فعلاً — في رومانيا هي NETOPIA، وفي غيرها قد تكون Stripe أو Checkout.com أو بوابة بنك محلي. والثابت هو القاعدة خلفها: لا يُعلَّم الطلب مدفوعاً إلا بإشعار مُتحقَّق منه من البوابة، لا بعودة متصفح العميل، ويبقى الدفع عند الاستلام عاملاً سواء كانت بوابة البطاقات مفعّلة أم لا.
نحن لا نبيع إلكترونيات. هل ينطبق أي من هذا علينا؟
ينطبق النمط: انقل الكتالوج إلى قاعدة بيانات تملكها، وأبقِ كل رابط قديم حياً، ودع الناس يشترون دون حساب، وامنح الفريق لوحة واحدة بدل خمس إضافات. وقد طبّقنا النمط نفسه على أسطول سيارات ومشغّل تأجير ومنصة بيوت عطلات — الغرف نفسها من النظام، بمخزون مختلف.
(✦) — هل أنت مستعد للبدء؟
لنبني منتجك الرقمي التالي في الإمارات.
موقع إلكتروني، منصة تجارة إلكترونية، أو تطبيق جوّال — مبني بكود مخصص ومُركَّز على التحويل ومُسلَّم في الوقت المحدد.
(✦) — الخدمات وراء هذا العمل
(✦) — أعمال ذات صلة



