كيف قمنا بأتمتة متجر كبير عبر الإنترنت وبدأنا في مطابقة المنتجات تلقائيًا

صورة

المقالة أكثر تقنية من الأعمال ، لكننا سنستخلص أيضًا بعض الاستنتاجات من وجهة نظر العمل. سيتم إيلاء معظم الاهتمام للمقارنة التلقائية للسلع من مصادر مختلفة.

يتكون عمل المتجر عبر الإنترنت من عدد كبير إلى حد ما من المكونات. وبغض النظر عن ماهية الخطة ، لتحقيق ربح في الوقت الحالي ، أو للنمو والبحث عن المستثمرين ، أو على سبيل المثال ، لتطوير مجالات ذات صلة ، على الأقل سيكون عليك إغلاق هذه الأسئلة:

  • العمل مع الموردين. لبيع شيء غير ضروري ، يجب عليك أولاً شراء شيء غير ضروري.
  • إدارة الدليل. شخص ما لديه تخصص ضيق ، بينما يبيع شخص ما مئات الآلاف من البضائع المختلفة.
  • إدارة أسعار التجزئة. هنا سوف تضطر إلى مراعاة أسعار الموردين وأسعار المنافسين والأدوات المالية ذات الأسعار المعقولة.
  • العمل مع المستودع. من حيث المبدأ ، لا يمكن أن يكون لديك مستودع خاص بك ، ولكن يمكنك أخذ البضائع من مستودعات الشركاء ، ولكن السؤال بطريقة أو بأخرى هو.
  • تسويق. هنا يتم ملء الموقع بالمحتوى ، والموضع على المواقع ، والإعلانات (عبر الإنترنت وغير متصل) ، والترقيات ، وأكثر من ذلك بكثير.
  • استقبال ومعالجة الطلبات. مركز الاتصال ، سلة على الموقع ، أوامر من خلال الرسائل الفورية ، أوامر من خلال المنصات والأسواق.
  • التسليم.
  • المحاسبة والأنظمة الداخلية الأخرى.

لا يحتوي المتجر ، الذي سنتحدث عنه ، على تخصص ضيق ، ولكنه يقدم مجموعة من كل شيء بدءًا من مستحضرات التجميل وحتى الجرار الصغير. سوف أخبرك كيف نعمل مع الموردين ، ومراقبة المنافسين ، وإدارة الكاتالوج والأسعار (تجارة الجملة والتجزئة) ، والعمل مع عملاء الجملة. لمسة صغيرة حول موضوع المستودع.

لفهم بعض الحلول التقنية بشكل أفضل ، لن يكون من الضروري معرفة ذلك في
في مرحلة ما ، قررنا أن الأشياء التكنولوجية ، إن أمكن ، ستتم ليس لأنفسنا ، ولكنها عالمية. وربما بعد عدة محاولات ، سيظهر لتطوير مشروع تجاري جديد. اتضح ، بشروط ، بدء التشغيل داخل الشركة.

لذلك نحن نفكر في نظام منفصل ، أكثر أو أقل عالمية ، مع ما تبقى من البنية التحتية للشركة متكاملة.

ما هي مشكلة العمل مع الموردين؟


وهناك الكثير منهم ، في الواقع. فقط لإعطاء بعض:

  • هناك العديد من الموردين في حد ذاتها. لدينا حوالي 400. كل شخص يحتاج إلى بعض الوقت.
  • لا توجد طريقة واحدة للحصول على عروض من الموردين. يرسل شخص ما إلى البريد في الموعد المحدد ، شخص ما عند الطلب ، شخص ما يقوم بالتحميل إلى ملف استضافة ، شخص ما يضع على الموقع. هناك العديد من الطرق ، حتى إرسال الملف عبر السكايب.
  • لا يوجد تنسيق بيانات واحد. أنا حتى رسم صورة حول هذا الموضوع (أنها أقل ، الجداول ترمز أشكال مختلفة).
  • هناك مفهوم الحد الأدنى لأسعار التجزئة والحد الأدنى لأسعار الجملة التي يجب مراعاتها من أجل مواصلة العمل مع المورد. في كثير من الأحيان يتم توفيرها في شكلها الخاص.
  • تسميات كل مورد مختلفة. نتيجة لذلك ، يتم تسمية المنتج نفسه بشكل مختلف ، ولا يوجد مفتاح فريد يمكن من خلاله مقارنة بسهولة. لذلك ، نقارن ذلك بصعوبة.
  • نظام تقديم الطلب مع المورد غير آلي. نحن نطلب من شخص ما على Skype ، من شخص في حسابك الشخصي ، إلى شخص نرسل ملف exel كل مساء به قائمة من الطلبات.

صورة

لقد تعلمنا التعامل مع هذه المشاكل. بالإضافة إلى الأخير ، العمل على الأخير قيد التقدم. الآن ستكون هناك تفاصيل فنية ، ثم فكر في القائمة التالية.

جمع البيانات


كما كان


تم جمع ملفات الموردين يدويًا من مصادر مختلفة وإعدادها. شمل الإعداد إعادة تسمية وفقا لقالب معين وتحرير المحتوى. اعتمادًا على الملف ، كان من الضروري إزالة البضائع غير القياسية أو البضائع غير الموجودة في المخازن أو إعادة تسمية الأعمدة أو تحويل العملة ، وجمع البيانات من علامات تبويب مختلفة في واحدة.

كيف فعلت


بادئ ذي بدء ، علمنا التحقق من البريد والتقاط الرسائل مع المرفقات من هناك. ثم قاموا بأتمتة العمل باستخدام روابط وروابط مباشرة لمحركات Yandex و Google. هذا حل مشكلة تلقي العروض من حوالي 75 ٪ من موردينا. لاحظنا أيضًا أنه من خلال هذه القنوات يتم تحديث العروض في كثير من الأحيان ، بحيث تكون النسبة الحقيقية للأتمتة أكثر. ما زلنا نحصل على بعض الأسعار في الرسل.

ثانياً ، لم نعد نعالج الملفات يدويًا. للقيام بذلك ، أدخلنا ملفات تعريف الموردين ، حيث يمكنك تحديد العمود وعلامة التبويب المراد استخدامها ، وكيفية تحديد العملة والتوافر ، ووقت التسليم ، وجدول عمل المورد.

اتضح بمرونة. بطبيعة الحال ، لم نأخذ كل شيء في الحسبان في المرة الأولى ، ولكن هناك الآن ما يكفي من المرونة لتهيئة معالجة جميع مقدمي الخدمات الـ 400 ، بالنظر إلى أن كل شخص لديه تنسيقات ملفات مختلفة.

بالنسبة لتنسيقات الملفات ، نحن نفهم xls ، xlsx ، csv ، xml (yml). في حالتنا ، كان هذا كافيا.

كما اكتشفوا كيفية تصفية السجلات. لقد وضعنا قائمة بالكلمات الموقفة ، وإذا كان عرض المورد يحتوي عليها ، فلن نقوم بمعالجتها. التفاصيل الفنية هي كما يلي: في قائمة صغيرة يمكنك وحتى أفضل "وجها لوجه" ، في قوائم كبيرة أسرع مرشح بلوم. لقد جربناه معه وتركنا كل شيء كما هو ، لأن المكسب محسوب في القائمة بترتيب أكبر من حجمنا.

شيء آخر مهم هو جدول عمل المورد. يعمل موردونا وفقًا لجداول زمنية مختلفة ، بالإضافة إلى ذلك ، يوجدون في بلدان مختلفة ، والتي لا تتزامن معها عطلات نهاية الأسبوع. وعادة ما يشار إلى وقت التسليم كرقم أو مجموعة من الأرقام في أيام العمل. عندما نقوم بتكوين أسعار التجزئة والجملة ، فسوف نضطر إلى تقييم الوقت الذي يمكننا فيه تسليم البضائع إلى العميل بطريقة أو بأخرى. للقيام بذلك ، أنشأنا تقويمات قابلة للتكوين ، وفي إعدادات كل موفر يمكنك تحديد أي من التقويمات التي يعمل عليها.

اضطررت إلى إجراء تكوين للخصومات والهوامش حسب الفئة والشركة المصنعة. يحدث أن يكون للمورد ملف مشترك لجميع الشركاء ، ولكن هناك اتفاقيات خصم مع بعض الشركاء. بفضل هذا ، كان لا يزال من الممكن إضافة أو طرح ضريبة القيمة المضافة إذا لزم الأمر.

بالمناسبة ، يقودنا تكوين قواعد الخصم والترميز إلى الموضوع التالي. بعد كل شيء ، قبل استخدامها ، تحتاج إلى معرفة نوع المنتج.

كيف يعمل رسم الخرائط


مثال صغير على كيفية استدعاء المنتج نفسه من موردين مختلفين ، لفهم ما يجب عليك التعامل معه:
مراقبة LG LCD 22MP48D-P
21.5 "LG 22MP48D-P أسود (16: 9 ، 1920 × 1080 ، IPS ، 60 هرتز ، DVI + D-Sub (VGA))
COMP - ملحقات الكمبيوتر - شاشات LG 22MP48D-P
ما يصل إلى 22 "شاشة إل جي شاملة LG 22MP48D-P (21.5" ، أسود ، IPS LED 5ms 16: 9 DVI matte 250cd 1920x1080 D-Sub FHD) 22MP48D-P
شاشات LG 22 "LG 22MP48D-P لامع - أسود (IPS ، LED ، 1920x1080 ، 5 مللي ثانية ، 178 درجة / 178 درجة ، 250 قرص / م ، 100 متر: 1 ، + DVI)
شاشات LCD شاشة LG LCD 22 "IPS 22MP48D-P LG 22MP48D-P
شاشة LG مقاس 21.5 "LG 22MP48D-P gl.Black IPS ، 1920 × 1080 ، 5 مللي ثانية ، 250 قرص / م 2 ، 1000: 1 (ميجا DCR) ، D-Sub ، DVI-D (HDCP) ، vesa 22MP48D-P.ARUZ
LG Monitor LG 22MP48D-P Black 22MP48D-P.ARUZ
مراقبة LG 22MP48D-P 22MP48D-P
يراقب LG 22MP48D-P لامع أسود 22MP48D-P
الشاشة 21.5 "LG Flatron 22MP48D-P gl.Black (IPS ، 1920 × 1080 ، 16: 9 ، 178/178 ، 250cd / m2 ، 1000: 1 ، 5ms ، D-Sub ، DVI-D) (22MP48D-P) 22MP48D-P
شاشة 22 "LG 22MP48D-P
LG 22MP48D-P IPS DVI
LG LG 21.5 "22MP48D-P IPS LED ، 1920 × 1080 ، 5 مللي ثانية ، 250cd / m2 ، 5 مليون: 1 ، 178 درجة / 178 درجة ، D-Sub ، DVI ، إمالة ، VESA ، أسود لامع 22MP48D-P
LG 21.5 "22MP48D-P (16: 9 ، IPS ، VGA ، DVI) 22MP48D-P
مراقب 21.5`` LG 22MP48D-P الأسود
LG MONITOR 21.5 "LG 22MP48D-P لامع - أسود (IPS ، LED ، 1920 × 1080 ، 5 مللي ، 178 ° / 178 ° ، 250 قرص / م ، 100 متر: 1 ، + DVI) 22MP48D-P
شاشة إل جي LCD 21.5 "[16: 9] 1920 × 1080 (FHD) IPS ، nonGLARE ، 250cd / m2 ، H178 ° / V178 ° ، 1000: 1 ، 16.7M لون ، 5ms ، VGA ، DVI ، Tilt ، 2Y ، أسود OK 22MP48D ف
LCD LG 21.5 "22MP48D-P black {IPS LED 1920x1080 5ms 16: 9 250cd 178 ° / 178 ° DVI D-Sub} 22MP48D-P.ARUZ
IDS_Monitors LG LG 22 "LCD 22MP48D 22MP48D-P
شاشة إل جي 21.5 إنش ، شاشة إل جي 21.5 إنش ، 21.5 إنش ، 22MP48D-P ، أسود IPS LED 5 مللي ثانية ، 16: 9 DVI غير لامع ، 250 سم ، 1920 × 1080 ، D-Sub FHD 2.7 كغم
شاشة 21.5 "LG 22MP48D-P [أسود] ؛ 5 مللي ثانية ؛ 1920 × 1080 ، DVI ، IPS

كما كان


مقارنة تشارك 1C (وحدة مدفوعة من طرف ثالث). بالنسبة للراحة / السرعة / الدقة ، فإن مثل هذا النظام جعل من الممكن الحفاظ على كتالوج يضم 60 ألف منتج متاح في هذا المستوى من قبل 6 أشخاص. وهذا هو ، كل يوم ، عفا عليها الزمن واختفت من عروض الموردين ، حيث تم إنشاء العديد من البضائع المطابقة مثل السلع الجديدة. تقريبًا - 0.5٪ من حجم الكتالوج ، أي 300 منتجات

كيف أصبح: وصف عام للنهج


أعلى قليلاً ، أعطيت مثالاً على ما نحتاج إلى مطابقته. عند استكشاف موضوع المطابقة ، فوجئت قليلاً بأن تطبيق البحث المرن شائع لمهمة المطابقة ، في رأيي ، له حدود مفاهيمية. بالنسبة لمكدس التكنولوجيا الخاص بنا ، فإننا نستخدم MS SQL Server لتخزين البيانات ، لكن المقارنة تعمل على البنية التحتية الخاصة بنا ، وحيث أن هناك الكثير من البيانات ونحن بحاجة إلى معالجتها بسرعة ، فإننا نستخدم هياكل البيانات المحسنة لمهمة محددة ونحاول عدم الوصول إلى القرص أو قاعدة البيانات دون الحاجة وغيرها من النظم البطيئة.

من الواضح أن مشكلة المقارنة يمكن حلها بطرق عديدة ، ومن الواضح أن أيا منها لن يعطي الدقة المطلقة. لذلك ، تتمثل الفكرة الرئيسية في محاولة الجمع بين هذه الطرق ، وترتيبها حسب الدقة والسرعة وتطبيقها بترتيب تنازلي من الدقة ، مع مراعاة السرعة.

يمكن تمثيل خطة التنفيذ لكل من الخوارزميات الخاصة بنا (مع تحفظ حول الحالات المنحلة) باختصار بالتسلسل العام التالي:

Tokenization. نقوم بتقسيم السطر المصدر إلى أجزاء مستقلة ذات معنى. يمكن أن يتم ذلك مرة واحدة وتستخدم في جميع الخوارزميات.

تطبيع الرموز. بطريقة جيدة ، تحتاج إلى جعل كلمات اللغة الطبيعية في الرقم العام والانحدار ، ويجب تحويل معرفات مثل "ABC15MX" (وهذا هو السيريلية ، إذا كان ذلك) إلى اللاتينية. وجلب كل شيء لنفس السجل.

تصنيف الرمز. محاولة لفهم ما يعنيه كل جزء. على سبيل المثال ، يمكنك تحديد فئة والشركة المصنعة واللون وما إلى ذلك.

ابحث عن أفضل مرشح لمباراة.

يشير تقدير احتمال أن الخط الأصلي وأفضل مرشح إلى نفس المنتج.

تعتبر النقطتان الأوليان شائعتين لجميع الخوارزميات المتوفرة حاليًا ، ثم تبدأ عمليات الارتجال.

Tokenization. لقد فعلنا ذلك تمامًا ، فقمنا بتقسيم الخط إلى أجزاء وفقًا للأحرف الخاصة مثل الفضاء ، الشرطة المائلة ، وما إلى ذلك. تحولت الأحرف المحددة بمرور الوقت إلى أهمية ، لكننا لم نستخدم أي شيء معقد في الخوارزمية نفسها.

ثم نحن بحاجة إلى تطبيع الرموز. تحويلها إلى أحرف صغيرة. بدلاً من توجيه كل شيء إلى الحالة الاسمية ، فإننا ببساطة نقطع النهايات. لدينا أيضًا قاموس صغير ، ونترجم الرموز الخاصة بنا إلى الإنجليزية. من بين أشياء أخرى ، تنقذنا الترجمة من المرادفات ، مما يعني ترجمة الكلمات الروسية إلى الإنجليزية بالطريقة نفسها. حيث فشلنا في الترجمة ، نقوم بتغيير الأحرف السيريلية الشبيهة بالإملاء إلى الأبجدية اللاتينية. (ليس هذا أمرًا لا لزوم له على الإطلاق ، كما اتضح. حتى إذا كنت لا تتوقع خدعة قذرة ، على سبيل المثال ، في السطر "Samsung UE43NU7100U" ، قد تحدث Cyrillic E).

صورة

تصنيف الرمز. يمكننا تسليط الضوء على فئة ، الشركة المصنعة ، النموذج ، المادة ، EAN ، اللون. لدينا دليل حيث يتم هيكلة البيانات. لدينا بيانات عن المنافسين الذين توفرهم منصات التداول لنا. عند معالجتها ، حيثما أمكن ، نقوم ببناء البيانات. يمكننا تصحيح الأخطاء أو الأخطاء المطبعية ، على سبيل المثال ، الشركة المصنعة أو اللون ، والتي تحدث مرة واحدة فقط في جميع مصادرنا ، وليس النظر في الشركة المصنعة واللون ، على التوالي. نتيجةً لذلك ، لدينا قاموس كبير من المُصنّعين والنماذج والمقالات والألوان وتصنيف الرمز المميز هو مجرد بحث عن القاموس عن O (1). من الناحية النظرية ، يمكنك الحصول على قائمة مفتوحة من الفئات ونوع من خوارزمية التصنيف الذكي ، ولكن النهج الأساسي لدينا يعمل بشكل جيد ، والتصنيف ليس عنق الزجاجة.

تجدر الإشارة إلى أنه في بعض الأحيان يوفر المورد بيانات منظمة بالفعل ، على سبيل المثال ، تكون المقالة في خلية منفصلة في الجدول ، أو أن المورد يقدم خصمًا على البيع بالتجزئة في مبيعات الجملة ، ويمكن الحصول على أسعار التجزئة بتنسيق yml (xml). بعد ذلك ، نحفظ بنية البيانات ، ونقسِّم الرموز المميزة إلى فئات فقط من البيانات غير المهيكلة.

والآن حول ما الخوارزميات وبأي ترتيب نستخدمها.

مباريات دقيقة ودقيقة تقريبًا


أبسط حالة. تم تقسيم الخطوط إلى رموز ، وقادتها إلى شكل واحد. ثم توصلوا إلى دالة هاش ليست حساسة لترتيب الرموز. بالإضافة إلى ذلك ، من خلال المطابقة بواسطة hash ، يمكننا الاحتفاظ بجميع البيانات الموجودة في الذاكرة ، ويمكننا تحمل 16 ميغا بايت لكل قاموس مع مليون مفتاح. في الممارسة العملية ، أداء الخوارزمية أفضل من مقارنات سلسلة بسيطة.

أما بالنسبة للتجزئة ، فإن استخدام كلمة "حصري" أو "يقترح نفسه ، ووظيفة كهذه:

public static long GetLongHashCode(IEnumerable<string> tokens) { long hash = 0; foreach (var token in tokens.Distinct()) { hash ^= GetLongHashCode(token); } return hash; } 

الشيء الأكثر إثارة للاهتمام في هذه المرحلة هو الحصول على تجزئة سطر واحد. في الممارسة العملية ، اتضح أن 32 بت صغيرة ، ويتم الحصول على الكثير من الاصطدامات. وأيضًا - أنه لا يمكنك فقط أخذ التعليمات البرمجية المصدر للدالة من الإطار وتغيير نوع القيمة المرجعة ، فهناك عدد أقل من الاصطدامات للخطوط الفردية ، ولكن بعد "الحصري أو" لا تزال تحدث ، لذلك كتبنا الخاصة بنا. في الواقع ، لقد أضافوا ببساطة إلى الوظيفة من إطار اللاخطية من بيانات الإدخال. كان الأمر أفضل بالتأكيد ، فمع الوظيفة الجديدة بالتصادم ، التقينا مرة واحدة فقط بملايين السجلات لدينا ، وتم تسجيلها وتأجيلها إلى أوقات أفضل.

وبالتالي ، نحن نبحث عن التطابقات دون مراعاة ترتيب الكلمات وشكلها. مثل هذا البحث يعمل ل O (1).

لسوء الحظ ، نادرًا ما يحدث ذلك أيضًا: "ABC 42 Type 16" و "ABC 16 Type 42" ، وهذان منتجان مختلفان. لقد تعلمنا أيضًا التعامل مع مثل هذه الأشياء ، لكن المزيد حول هذا الأمر لاحقًا.

مطابقة المنتجات البشرية المؤكدة


لدينا منتجات تتم مطابقتها يدويًا (غالبًا ما تكون هذه المنتجات مطابقة تلقائيًا ، ولكن تم التحقق منها يدويًا). في الواقع ، نحن نفعل الشيء نفسه في هذه الحالة ، الآن فقط أضفنا قاموسًا للتطابقات المتطابقة ، ولم يغير البحث عن تعقيد وقت الخوارزمية.

تكمن الأسطر المطابقة يدويًا ببساطة في قاعدة البيانات ، فقط في حالة ما إذا كانت هذه البيانات الأولية تسمح لك بتغيير خوارزمية التجزئة في المستقبل وإعادة حساب كل شيء ولا تفقد أي شيء.

تعيين السمة


الخوارزميات الأولى والثانية سريعة ودقيقة ، ولكن ليست كافية. بعد ذلك نطبق مطابقة السمة.

في السابق ، قدمنا ​​بالفعل البيانات في شكل رموز طبيعية وحتى فرزها إلى فئات. في هذا الفصل ، أدعو سمات الفئات المميزة.

السمة الأكثر موثوقية هي EAN (https://ru.wikipedia.org/wiki/European_Article_Number). تمنحك مباريات EAN ضمانًا تقريبًا 100٪ من أنها المنتج نفسه. عدم تطابق EAN ، ومع ذلك ، لا يقول أي شيء ، لأن منتج واحد قد يكون له EAN مختلفة. كل شيء سيكون على ما يرام ، ولكن في بياناتنا EAN أمر نادر الحدوث ، وبالتالي تأثيرها على المقارنة على مستوى الخطأ.

المقالة أقل موثوقية. غريبًا ما يحصل مباشرة من البيانات المنظمة للمورد ، ولكن في أي حال في هذه المرحلة ، نستخدمها.

كما في المرحلة الأخيرة ، نستخدم هنا القواميس (ابحث عن O (1)) ، ويتم استخدام التجزئة من (الشركة المصنعة + نموذج + مقالة) كمفتاح. التجزئة يتيح لك أداء جميع العمليات في الذاكرة. في هذه الحالة ، نأخذ بعين الاعتبار أيضًا اللون ، إذا كان مطابقًا أو غير موجود ، فإننا نعتقد أن البضائع تزامنت.

البحث عن أفضل مباراة


كانت الخطوات السابقة بسيطة وسريعة وموثوقة إلى حد ما ، لكنها للأسف تغطي أقل من نصف المقارنات.

في البحث عن أفضل تطابق ، هناك فكرة بسيطة: مصادفة الرموز النادرة لها وزن كبير ، وتزامن الرموز المتكررة صغير. يتم تقييم الرموز التي تحتوي على أرقام أكثر من الرموز المميزة للحرف. يتم تقييم الرموز التي تطابق في نفس الترتيب أكثر من الرموز المميزة التي يتم إعادة ترتيبها. المباريات الطويلة هي أفضل من المباريات القصيرة.

الآن يبقى التوصل إلى بنية بيانات سريعة يمكنها أن تأخذ كل ذلك في الاعتبار في نفس الوقت وتنسجم مع ذاكرة دليل يحتوي على عدة ملايين من السجلات.

لقد توصلنا إلى فكرة تقديم الكتالوج الخاص بنا في شكل قاموس من القواميس ، على المستوى الأول ، سيكون المفتاح علامة تجزئة من الشركة المصنعة (البيانات في الكتالوج مُهيكلة ، ونعرف الشركة المصنعة) ، والقيمة هي القاموس. الآن المستوى الثاني. سيكون المفتاح في المستوى الثاني هو التجزئة من الرمز المميز ، والقيمة هي قائمة عناصر المعرف من الكتالوج حيث تم العثور على هذا الرمز المميز. وفي هذه الحالة ، نستخدم تضمين مجموعات الرموز المميزة بالترتيب الذي تظهر به في الكتالوج الخاص بنا. نقرر ما يجب استخدامه كمجموعة ، وما هو غير ذلك ، وهذا يتوقف على عدد الرموز والدقة والذاكرة المطلوبة ، وهذا يتوقف على عدد الرموز المميزة وطولها وما إلى ذلك. في الشكل ، قمت بتبسيط هذا الهيكل ، بدون تجزئات ودون التطبيع.

صورة

إذا تم استخدام 20 رمزًا في المتوسط ​​لكل منتج ، ثم في قوائمنا ، التي تحتوي على قيم القاموس المرفق ، سيحدث رابط للمنتج في المتوسط ​​20 مرة. لن يكون هناك أكثر من 20 مرة الرموز المختلفة من هناك البضائع في الكتالوج. تقريبًا ، يمكنك حساب الذاكرة المطلوبة لفهرسة من مليون سجل: 20 مليون مفتاح ، 4 بايت لكل ، 20 مليون معرف منتج ، 4 بايت لكل ، حمل عام لتنظيم القواميس والقوائم (الترتيب هو نفسه ، ولكن منذ حجم القوائم والقواميس نحن لا نعرف مقدما ، ولكن زيادة على الذهاب ، وضرب اثنين). المجموع - 480 ميغابايت. في الواقع ، تحولت إلى عدد أكبر قليلاً من الرموز للسلع ، ونحن بحاجة إلى ما يصل إلى 800 ميغابايت لكل كتالوج في مليون سلعة. ما هو مقبول ، فإن قدرات الحديد الحديثة تسمح لك بالتخزين في وقت واحد في الذاكرة أكثر من مائة دليل من هذا الحجم.

العودة إلى الخوارزمية. بوجود سلسلة نحتاج إلى مطابقتها ، يمكننا تحديد الشركة المصنعة (لدينا خوارزمية تصنيف) ، ثم الحصول على الرموز باستخدام نفس الخوارزمية للبضائع من الكتالوج. هنا أقصد ، بما في ذلك مجموعات من الرموز.

ثم كل شيء بسيط نسبيا. لكل رمز ، يمكننا أن نجد بسرعة جميع المنتجات التي تم العثور عليها فيها ، ونقدر وزن كل مباراة ، مع الأخذ في الاعتبار كل ما تحدثنا عنه في وقت سابق - الطول ، التردد ، وجود أرقام أو أحرف خاصة ، وتقييم "تشابه" جميع المرشحين الذين تم العثور عليهم. في الواقع ، هناك أيضًا تحسينات هنا ، لا نعتبر جميع المرشحين ، أولاً نقوم بإنشاء قائمة صغيرة من مباريات الرموز ذات وزن كبير ، ولا نطبق مطابقات الرموز ذات الوزن المنخفض على جميع المنتجات ، ولكن فقط على هذه القائمة.

نختار أفضل تطابق وننظر إلى مصادفة الرموز التي تبين أنها مصنفة وننظر في درجة المقارنة. علاوة على ذلك ، لدينا قيمتان عتبة P1 و P2 ، P1 <P2. إذا تبين أن التقييم أكثر من قيمة الحد الأدنى P2 - مشاركة الإنسان ليست مطلوبة ، فكل شيء يحدث تلقائيًا. إذا كانت بين قيمتين - فنحن نقدم عرض المقارنة يدويًا ، قبل ذلك لن يشارك في التسعير. إذا كان أقل من P1 - على الأرجح ، مثل هذا المنتج غير موجود في الكتالوج ، فإننا لا نرجع أي شيء.

رجوع إلى السطور "ABC 42 Type 16" و "ABC 16 Type 42". الحل بسيط بشكل مدهش - إذا كان للعديد من المنتجات نفس التجزئات ، فلن نطابقها مع التجزئة. وسوف تأخذ الخوارزمية الأخيرة في الاعتبار ترتيب الرموز. من الناحية النظرية ، لا يمكن مطابقة هذه الأسطر في قائمة أسعار المورد بأي شيء تعسفي ، حيث لا يحدث الرقمان 16 و 42 على الإطلاق. في الواقع ، لم نواجه مثل هذه الحاجة.

السرعة والدقة


الآن لسرعة كل شيء. يعتمد الوقت اللازم لإعداد القواميس خطيًا على حجم الكتالوج. الوقت المطلوب مباشرة للمقارنة ، يعتمد بشكل خطي على عدد البضائع التي تتم مقارنتها. لا يتم تغيير جميع هياكل البيانات المشاركة في البحث بعد الإنشاء. هذا يعطينا الفرصة لاستخدام multithreading في مرحلة المطابقة. يستغرق العمل التحضيري لكتالوج المليون سجل حوالي 40-80 ثانية. المقارنة تعمل بسرعة 20-40 ألف سجل في الثانية الواحدة ولا تعتمد على حجم الدليل. ثم ، ومع ذلك ، تحتاج إلى حفظ النتائج. الطريقة التي تم اختيارها مفيدة بشكل عام للكميات الكبيرة ، ولكن سيكون الملف الذي يحتوي على أكثر من عشرة سجلات طويلًا بشكل غير متناسب. لذلك ، نستخدم ذاكرة التخزين المؤقت ونعيد حساب هياكل البحث مرة كل 15 دقيقة.

صحيح ، يجب قراءة بيانات المقارنة في مكان ما (غالبًا ما يكون هذا ملفًا ممتازًا) ، ويجب حفظ الجمل المطابقة في مكان ما ، وهذا يستغرق أيضًا وقتًا. وبالتالي فإن العدد الإجمالي هو 2-4000 السجلات في الثانية الواحدة.

من أجل تقييم الدقة ، قمنا بإعداد مجموعة اختبار من حوالي 20.000 مقارنات تم التحقق منها يدويًا من موردين مختلفين من فئات مختلفة. بعد كل تغيير ، تم اختبار الخوارزمية على هذه البيانات. النتائج هي كما يلي:

  • البضائع في الكتالوج وتمت مقارنتها بشكل صحيح - 84 ٪
  • المنتج موجود في الكتالوج ، لكن لم تتم مطابقته ، يلزم المطابقة اليدوية - 16٪
  • البضائع في الكتالوج وتمت مقارنتها بشكل غير صحيح - 0.2 ٪
  • المنتج غير موجود في الكتالوج ، وحدده البرنامج بشكل صحيح - 98.5٪
  • المنتج غير موجود في الكتالوج ، لكن البرنامج يقابله بأحد المنتجات - 1.5٪

في 80٪ من الحالات التي تمت فيها مطابقة المنتج ، لا يلزم التأكيد اليدوي (نؤكد المقارنة تلقائيًا) ، ومن بين هذه العروض المؤكدة تلقائيًا 0.1٪ من الأخطاء.

بالمناسبة ، 0.1 ٪ من الأخطاء كثيرة ، كما اتضح. بالنسبة إلى مليون سجل متطابق ، هذا هو ألف سجل مطابق بشكل غير صحيح. وهذا كثير لأن المشترين يجدون مثل هذه السجلات بالضبط أفضل. حسنا ، كيف لا تأمر جرار لسعر المصابيح الأمامية من هذا الجرار. ومع ذلك ، فإن هذه الأخطاء ألف في بداية العمل على مليون مقترحات ، تم تصحيحها تدريجيا. الحجر الصحي للأسعار المشبوهة ، والتي تغلق هذه المسألة ، ظهرت في وقت لاحق ، في أول شهرين عملنا بدونها.

هناك فئة أخرى من الأخطاء التي لا تتعلق بالمقارنة ، وهي الأسعار الخاطئة لموردينا. هذا هو السبب في أننا لا نأخذ السعر في الاعتبار عند المقارنة. قررنا أنه نظرًا لأن لدينا معلومات إضافية في شكل سعر ، فسوف نستخدمها لمحاولة تحديد ليس فقط أخطائنا ، ولكن أيضًا أخطاء الآخرين.

البحث عن أسعار خاطئة


هذا هو الجزء الذي نجربه بنشاط. الإصدار الأساسي هو ، ولا يسمح لك ببيع الهاتف بسعر إحدى الحالات ، لكني أشعر أنه أفضل.

لكل منتج نجد حدود أسعار الموردين المقبولة. بناءً على البيانات المتاحة ، نأخذ في الاعتبار أسعار الموردين لهذا المنتج ، وأسعار المنافسين ، وأسعار موردي سلع هذه الشركة المصنعة في هذه الفئة. الأسعار التي لا تقع ضمن الحدود يتم عزلها وتجاهلها في جميع الخوارزميات لدينا. يدويًا ، يمكنك تحديد هذا السعر المشبوه كالمعتاد ، ثم نتذكر هذا المنتج ونعيد سرد حدود الأسعار المقبولة.

تتغير الآن الخوارزمية المباشرة لحساب الحد الأقصى والحد الأدنى للأسعار المقبولة باستمرار ، ونحن نبحث عن حل وسط بين عدد الإيجابيات الخاطئة وعدد الأسعار غير الصحيحة التي تم اكتشافها.

نستخدم القيم المتوسطة في العمليات الحسابية (تعطي المتوسطات أسوأ النتائج) ولا نحلل بعد نموذج التوزيع. إن تحليل نموذج التوزيع هو مجرد مكان يمكن فيه تحسين الخوارزمية كما يبدو لي.

العمل مع قاعدة البيانات


من كل ما سبق ، يمكننا أن نستنتج أننا نقوم بتحديث البيانات المتعلقة بالموردين والمنافسين في كثير من الأحيان وبطرق عديدة ، وأن العمل مع قاعدة البيانات يمكن أن يصبح عنق الزجاجة. من حيث المبدأ ، لفتنا الانتباه في البداية إلى ذلك وحاولنا تحقيق أقصى أداء. عند العمل مع عدد كبير من السجلات ، نقوم بما يلي:

  • نحذف الفهارس من الجدول الذي نعمل به
  • تعطيل فهرسة النص الكامل في هذا الجدول
  • حذف جميع السجلات ذات شرط معين (على سبيل المثال ، جميع عروض الموردين المعينين الذين نعالجهم حاليًا)
  • إدراج سجلات جديدة مع BULK COPY
  • إعادة إنشاء الفهارس
  • تمكين فهرسة النص الكامل


تعمل النسخة المجمعة بسرعة تتراوح من 10 إلى 40 ألف سجل في الثانية الواحدة ، لماذا يبقى هذا الفارق الكبير في الظهور ، لكنه مقبول للغاية.

يستغرق حذف السجلات نفس وقت الإدراج. لا يزال يلزم بعض الوقت لإعادة إنشاء الفهارس.

بالمناسبة ، لكل دليل لدينا قاعدة بيانات منفصلة. نحن خلقهم على الطاير. والآن سوف أخبركم لماذا لدينا أكثر من كتالوج واحد.

ما هي مشكلة الفهرسة


وهناك الكثير منهم أيضا. الآن سنقوم بإدراج:

  • يحتوي الكتالوج على حوالي 400 ألف منتج من فئات مختلفة تمامًا. من المستحيل أن نفهم مهنيا كل فئة من الفئات.
  • تحتاج إلى اتباع نمط معين ، واتباع القواعد العامة لاسم الكتالوج ، وتسمية الفئات الفرعية وما إلى ذلك. وبالتالي نحن نحاول تحقيق بنية دليل متماسكة ومنطقية.
  • يمكنك إنشاء المنتج نفسه عدة مرات ، وهذه مشكلة. بدون أداة لتحليل أسماء مشابهة ، يتم إنشاء التكرارات باستمرار.
  • من المعقول أن تضيف إلى الكتالوج تلك البضائع التي لدى الموردين في المخزون. في هذه الحالة ، يجب أن يكون لديك أولويات لفئات المنتجات.
  • نحن بحاجة إلى العديد من الدلائل. واحد من جانبنا ، نحن نتعامل معه بأنفسنا ، والآخر - كتالوج المجمع ، نقوم بتحديثه عن طريق api. معنى الكتالوج الثاني هو أن منصة التجميع لا تعمل إلا مع الكتالوج الخاص بها ، وبالتالي ، تقبل العروض في تسمياتها. هذا هو مكان آخر حيث تبين أنك تحتاج إلى مقارنة.

لقد اعتقدنا أنه من المنطقي والصحيح الاحتفاظ بدليل في نفس المكان الذي تتم فيه المقارنات. لذلك يمكننا أن نقول للمستخدمين الذين يديرون الدليل ما لدى المورد ، ولكن ليس في الدليل.

كيف نحافظ على كتالوج


سيكون حول الكتالوج دون خصائص مفصلة ، والخصائص هي قصة كبيرة منفصلة ، عن ذلك في وقت آخر.

كخصائص أساسية ، اخترنا ما يلي:

  • الشركة المصنعة
  • فئة
  • النموذج
  • رقم البند
  • اللون
  • EAN

أولاً ، قمنا بتطبيق api للحصول على الكتالوج من مصدر خارجي ، ثم عملنا على توفير وإنشاء وتحرير وحذف السجلات.

كيف يعمل البحث


إن راحة إدارة الكتالوج ، أولاً وقبل كل شيء ، هي القدرة على العثور بسرعة على منتج في الكتالوج أو عرض المورد ، وهناك فروق دقيقة. على سبيل المثال ، يجب أن تكون قادرًا على البحث عن السطر "LG 21.5" 22MP48D-P (16: 9 ، IPS ، VGA ، DVI) 22MP48D-P "عن" 2MP48 ".

البحث عن خادم SQL كامل النص خارج الصندوق غير مناسب ، لأنه لا يعرف كيفية القيام بذلك ، كما أن البحث باستخدام LIKE '٪ 2MP48٪' ​​بطيء جدًا.

حلنا هو المعيار إلى حد ما ، ونحن نستخدم غرام. بتعبير أدق ، ثم البراغيث. وبالفعل بواسطة trigrams ، نقوم ببناء فهرس نص كامل ونجري بحثًا عن النص الكامل. لست متأكدًا من أننا نستخدم المساحة بشكل عقلاني للغاية في هذه الحالة ، ولكن فيما يتعلق بالسرعة ، ظهر هذا الحل ، بناءً على الطلب ، فهو يعمل من 50 إلى 500 مللي ثانية ، وأحيانًا يصل إلى ثانية على مجموعة من ثلاثة ملايين سجل.

اسمحوا لي أن أشرح ، يتم تحويل السطر "LG 21.5" 22MP48D-P (16: 9 ، IPS ، VGA ، DVI) 22MP48D-P "إلى السطر" lg2 g21 215 152 522 22m 2mp mp4 p48 48d 8dp dp1 p16 169 69i 9ip ips psv svg vga gad adv dvi vi2 i22 "، والتي يتم تخزينها في حقل منفصل يشارك في فهرس النص الكامل.

بالمناسبة ، ثلاثية الأبعاد لا تزال مفيدة لنا.

إنشاء منتج جديد


بالنسبة للجزء الأكبر ، يتم إنشاء المنتجات في الكتالوج بناء على اقتراح من المورد. أي أن لدينا بالفعل معلومات تفيد بأن المورد يوفر "شاشة إل جي LCD 21.5" [16: 9] IPS 1920x1080 (FHD) IPS ، nonGLARE ، 250cd / m2 ، H178 ° / V178 ° ، 1000: 1 ، 16.7M بالألوان ، 5 مللي ثانية ، VGA ، DVI ، Tilt ، 2Y ، أسود OK 22MP48D-P "بسعر 120 دولارًا ، ولديه 5 إلى 10 وحدات في المخزن.

عند إنشاء منتج ، أولاً وقبل كل شيء ، نحتاج إلى التأكد من أن هذا المنتج لم يتم إنشاؤه بعد في الكتالوج. نحن نحل هذه المشكلة في أربع مراحل.

أولاً ، إذا كان لدينا منتج في الكتالوج ، فمن المحتمل جدًا أن تتم مطابقة اقتراح المورد مع هذا المنتج تلقائيًا.

ثانياً ، قبل أن نظهر للمستخدم نموذج إنشاء منتج جديد ، سنقوم بالبحث عن طريق برامج ثلاثية الأبعاد وإظهار النتائج الأكثر صلة. (من الناحية الفنية يتم ذلك باستخدام CONTAINSTABLE).

ثالثًا ، بينما نقوم بملء الحقول لمنتج جديد ، سوف نعرض منتجات مماثلة موجودة. هذا يحل مشكلتين: إنه يساعد على تجنب التكرارات والحفاظ على النمط في الأسماء ، ويمكن استخدام المنتجات المماثلة كنموذج.

ورابعا ، تذكر ، قمنا بتقسيم الخطوط إلى الرموز ، وتطبيعها ، وحساب التجزئة؟ سنفعل نفس الشيء ولن نسمح بإنشاء بضائع بنفس التجزئات.

في هذه المرحلة ، نحاول مساعدة المستخدم. من خلال السطر الموجود في قائمة الأسعار ، سنحاول تحديد الشركة المصنعة والفئة والمقالة و EAN ولون البضائع. أولاً ، عن طريق الرموز (يمكننا تقسيمها إلى فئات) ، ثم إذا لم ينجح الأمر ، فسنجد المنتج الأكثر تشابهًا بواسطة البرامج ثلاثية الأبعاد. وإذا كان الأمر مشابهًا بدرجة كافية ، فقم بملء المصنِّع والفئة.

يعمل تحرير المنتج على نفس المنوال تقريبًا ، وليس كل شيء قابل للتطبيق.

كيف وضعنا أسعارنا


المهمة هي: الحفاظ على توازن بين كمية وهامش المبيعات ، في الواقع - لتحقيق أقصى ربح. تتعلق جميع الجوانب الأخرى لعمل المتجر أيضًا ، ولكن ما يحدث بالضبط في مرحلة التسعير له أكبر الأثر.

على الأقل ، سنحتاج إلى معلومات عن العروض المقدمة من الموردين والمنافسين. كما يجدر النظر في الحد الأدنى لأسعار التجزئة والجملة وتكاليف التسليم ، وكذلك الأدوات المالية - القروض والأقساط.

نحن نجمع أسعار المنافسين


بادئ ذي بدء ، لدينا العديد من ملفات التعريف الخاصة بالأسعار الخاصة بنا. هناك ملف تعريف لتجارة التجزئة ، وهناك العديد من عملاء الجملة. يتم إنشاء كل منهم وتكوينها في نظامنا.

وفقا لذلك ، فإن المنافسين لكل ملف تعريف مختلف. في البيع بالتجزئة - متاجر التجزئة الأخرى ، في مبيعات الجملة - لدينا نفس الموردين.

كل شيء واضح مع الموردين ، ولكن بالنسبة لتجارة التجزئة ، نجمع بيانات المنافسين بعدة طرق. أولاً ، توفر بعض أدوات التجميع معلومات عن جميع أسعار جميع السلع الموجودة على الموقع. في التسمية الخاصة بنا ، ولكن يمكننا مطابقة المنتجات ، بحيث تعمل تلقائيًا. وهذا يكاد يكفي الآن. ثانيا ، لدينا المنافسين المحللون. نظرًا لأن هذه الأجهزة غير مؤتمتة بعد وتوجد في شكل تطبيقات وحدة التحكم (التي تتعطل في بعض الأحيان) ، نادرًا ما نستخدمها.

تخصيص ملف التعريف الخاص بك


في الملف الشخصي ، لدينا الفرصة لتكوين نطاقات مختلفة من الهوامش حسب سعر البضاعة من المورد أو الفئة أو الشركة المصنعة أو المورد.لا يزال من الممكن الإشارة إلى أي من الموردين في أي فئة أو الشركة المصنعة التي نعمل بها ، وأي من - لا ، أي من المنافسين نأخذهم في الاعتبار.

بعد ذلك ، قمنا بإعداد الأدوات المالية والإشارة إلى الأقساط المتاحة والمبلغ الذي سيستلمه البنك لنفسه.

وبالفعل ضمن هوامش الهوامش ، نقوم بتكوين أسعارنا الخاصة ، ونحاول الحفاظ على نفس الرصيد في المقام الأول ، وجعل سلع المستودعات لدينا تبيع بشكل أفضل في المقام الثاني. هذا هو باختصار ، لكن في الواقع لا أفترض أن أشرح بكلمات بسيطة ما يحدث هناك.

أستطيع أن أخبركم بما لا يحدث. لسوء الحظ ، لا نعرف حتى الآن كيفية التنبؤ بالطلب ومراعاة تكلفة تخزين البضائع في المستودع.

التكامل مع أنظمة الطرف الثالث


جزء مهم من وجهة نظر العمل ، ولكن غير مهتم من الناحية الفنية. باختصار ، يمكنني القول أنه يمكننا إرسال البيانات إلى أنظمة الجهات الخارجية (بما في ذلك الأنظمة الإضافية ، أي أننا نفهم ما الذي تغير منذ آخر تبادل) ويمكننا أن نفعل قوائم المراسلات.

النشرات الإخبارية قابلة للتخصيص ، لذلك (وليس هذا فقط) نقدم عروضنا للعملاء بالجملة.

هناك طريقة أخرى للعمل مع عملاء الجملة وهي بوابة b2b. لا يزال في التنمية النشطة ، وسوف تعمل حرفيا في شهر واحد.

الحسابات ، وتغيير التسجيل


سؤال آخر غير مهتم من الناحية الفنية. كل مستخدم لديه حساب.

باختصار ، يمكن قول ما يلي: إذا تم استخدام ORM ، عندها آلية تتبع تغيير مضمّنة. إذا دخلت فيه (وفي حالتنا هذه هي EF Core وهناك حتى API هناك) ، يمكنك الحصول على تسجيل في سطرين تقريبًا.

بالنسبة لسجل التغيير ، قمنا بإنشاء واجهة ، والآن يمكنك تتبع من قام بتغيير ما في إعدادات النظام ، ومن قام بتحرير أو مقارنة منتجات معينة ، وما إلى ذلك.

وفقا للسجلات ، يمكن النظر في الإحصاءات ، وهو ما نقوم به. نحن نعرف من قام بإنشاء أو تحرير عدد المنتجات ، وعدد المقارنات التي تم تأكيدها يدويًا وعدد المنتجات المرفوضة ، ويمكنك رؤية كل تغيير.

قليلا عن الهيكل العام للنظام


لدينا قاعدة بيانات واحدة للحسابات وأشياء مستقلة عن الكتالوج وقاعدة بيانات واحدة للسجلات وقاعدة بيانات لكل دليل. هذا يجعل استعلامات الدليل أسهل ، وتحليل البيانات أسهل ، والرمز أكثر قابلية للفهم.

بالمناسبة ، نظام التسجيل مكتوب ذاتيًا ، نحتاج حقًا إلى تجميع السجلات المتعلقة بطلب واحد أو مهمة واحدة كبيرة ، بالإضافة إلى أننا نحتاج إلى وظيفة أساسية لتحليلها. مع حلول تسليم المفتاح ، اتضح أن هذا أمر صعب ، بالإضافة إلى أن هذا يمثل تبعية أخرى تحتاج إلى الدعم.

تتكون واجهة الويب على ASP.NET Core و bootstrap ، ويتم تنفيذ العمليات الثقيلة بواسطة خدمة Windows.

ميزة أخرى استفادت من المشروع ، في رأيي ، هي نماذج مختلفة لقراءة وكتابة البيانات. لم ننفذ CQRS كاملة ، لكننا أخذنا أحد المفاهيم من هناك. نكتب إلى قاعدة البيانات من خلال المستودعات ، لكن الكائنات المستخدمة للتسجيل لا تترك أبدًا أساليب التحديث / الإنشاء / الحذف. يتم التحديث الشامل من خلال نسخة بالجملة. تم تصميم نموذج منفصل وطبقة منفصلة من الوصول إلى البيانات للقراءة ، لذلك نقرأ فقط ما نحتاجه في لحظة معينة. اتضح أنه يمكنك استخدام ORM ، وفي الوقت نفسه تجنب الاستعلامات الثقيلة ، والوصول إلى قاعدة البيانات في أوقات غير مؤكدة (مثل التحميل كسول) ، ومشاكل N + 1. ، ونحن نستخدم أيضًا النموذج لقراءة DTO.

من بين التبعيات الرئيسية ، لدينا ASP.NET Core والعديد من حزم nuget لجهة خارجية و MS SQL Server. بينما يكون ذلك ممكنًا ، نحاول عدم الاعتماد على العديد من أنظمة الجهات الخارجية. من أجل نشر المشروع بالكامل محليًا ، ما عليك سوى تثبيت SQL Server ، والاستيلاء على الكود المصدري من نظام التحكم في الإصدار وإنشاء المشروع. سيتم إنشاء قواعد البيانات اللازمة تلقائيًا ، ولكن لا يلزم أي شيء آخر. قد تضطر إلى تغيير واحد أو سطرين في التكوين.

ما لم يفعل


لم نقم بعد بإنشاء نظام معرفي للمشروع. نريد أن نفعل الويكي ونصائح في المكان. لم يصنعوا واجهة بسيطة سهلة الاستخدام ، واجهة ليست سيئة ، ولكنها مشوشة قليلاً لشخص غير مستعد. CI / CD حتى الآن فقط في الخطط.

لم تتعامل مع الخصائص التفصيلية للبضائع. نحن نخطط أيضًا ، لكن لا يوجد موعد نهائي محدد.

صورة

ملخص الأعمال


من بداية التطوير النشط وحتى إطلاقه في الإنتاج ، عمل شخصان على المشروع لمدة 7 أشهر. في البداية ، كان لدينا نموذج أولي صنع في وقت فراغنا. تم إعطاء التكامل الأكثر صعوبة للأنظمة الحالية.

للأشهر الثلاثة التي نحن بصدد إنتاجها ، زاد عدد السلع المتاحة للعملاء بالجملة من 70 ألفًا إلى 230 ألفًا ، وارتفع عدد السلع على الموقع من 60 ألفًا إلى 140 ألفًا. الموقع متأخر دائمًا لأنه يحتاج إلى ميزات وصور وأوصاف المنتج. نقوم بتفريغ 106 آلاف عرض على المجمع بدلاً من 40 ألف قبل ثلاثة أشهر. لم يتغير عدد الأشخاص الذين يعملون مع الكتالوج.

نحن نعمل مع 425 من الموردين ، وقد تضاعف هذا الرقم تقريبًا في ثلاثة أشهر. نحن تتبع أسعار أكثر من ألف المنافسين. حسنًا ، بينما نتتبع ذلك - لدينا نظام للتحليل ، لكن في معظم الحالات ، نأخذ بيانات جاهزة من أولئك الذين يقدمونها بانتظام.

لسوء الحظ ، لا يمكنني إخبارك بالمبيعات ، وأنا شخصياً لا أملك بيانات موثوقة. الطلب موسمي ، ولا يمكن مقارنة الشهر مباشرة بالشهر السابق. وفي عام حدث الكثير لتسليط الضوء على تأثير نظامنا من جميع العوامل. لقد دفعت بالفعل تكاليف التطوير والتنفيذ ، مشروطة جدًا ، بالإضافة إلى أو ناقص كيلومتر واحد ، ونمو الكتالوج ، وأسعار أكثر مرونة وتنافسية ونمو المبيعات المرتبط بها.

نتيجة أخرى - حصلنا على مشروع لا يرتبط بشكل أساسي بالبنية التحتية لمتجر معين ، ويمكنك إنشاء خدمة عامة منه. لقد تم تصوره من البداية ، وهذه الخطة عملت تقريبًا. لسوء الحظ ، فشل حل محاصر. لتقديم مشروع كخدمة حيث يمكنك التسجيل ، حدد مربع "أوافق" ، والذي يعمل "كما هو" ، دون الحاجة إلى التكيف مع العميل ، تحتاج إلى إعادة تصميم الواجهة وإضافة المرونة وإنشاء ويكي. ولجعل البنية التحتية قابلة للتحجيم بسهولة والقضاء على نقطة فشل واحدة. الآن لدينا نسخ احتياطية منتظمة فقط من وسائل ضمان الموثوقية. كحل للمؤسسات ، أعتقد أننا مستعدون لحل مشاكل العمل. الأعمال الصغيرة هي لإيجاد الأعمال التجارية.

بالمناسبة ، لقد اجتذبنا بالفعل عميلًا تابعًا لجهة خارجية ، ولديه الوظائف الأساسية. كان الرجال بحاجة إلى أداة لمقارنة البضائع ، والإزعاج المرتبط بالتطوير النشط لم يخيفهم.

صورة

Source: https://habr.com/ru/post/ar456604/


All Articles