Tinkoff.ru تطور العديد من الخدمات في سوق الخدمات المالية. يحلل المحللون والمطورون والتقنيون والمديرون مهامهم اليومية. كل يوم نولد الأفكار ونحلل ونطور ونبذل قصارى جهدنا لخلق أفضل منتج في السوق.
أنا أعمل كمبرمج في قسم التطوير الداخلي. نحن نساعد في إطلاق خطوط أعمال جديدة وأتمتة سير العمل ومحاولة توفير بنك للمال حيثما كان ذلك ممكنًا (على سبيل المثال ، رفض شراء ترخيص لنوع من البرامج باهظة الثمن). يعد سير العمل لدينا معيارًا كبيرًا: حيث يتوصل المديرون إلى ميزات العمل ، ويقوم الفنيون بإضفاء الطابع الرسمي عليها وتحديد المهام ، ويقوم المحللون بتحليل البيانات ، ويقوم المطورون بالفعل بحل المهام المسندة إليهم. كل شيء في الحياة أكثر تعقيدًا ، لكنك تعرف ذلك بالفعل.
أحد عملاء أعمالنا هو قسم ولاء العملاء - Tinkoff Target. قبل أن أتحدث عن أتمتة التحليلات ، سأشرح كيف يعمل برنامج الولاء لدينا.
برنامج الولاء Tinkoff.ru أو كيفية توزيع استرداد النقود على الناس
تصدر جميع البنوك الحديثة تقريبًا استرداد نقدي: بالروبل أو الأميال أو الببغاوات (النقاط التي يمكنك إنفاقها على شيء محدد).
نحن لسنا استثناء ، فنحن نصدر استرداد نقدي قياسي قدره 1٪ لكل شيء و 5٪ لثلاث فئات محددة (على سبيل المثال ، "النقل" ، "السينما" ، "الهدايا التذكارية" وما إلى ذلك). لا يتعين عليك تقديم الكثير من هذه المبالغ المستردة (لكنني أريد حقًا ذلك) ، وبالتالي لدينا عروض خاصة من شركاء البنك الذين يرغبون أيضًا في استرداد النقود. لذلك ، كجزء من خط الأعمال لبرامج الولاء ، نحاول إيجاد وإقناع العديد من الشركات بإصدار استرداد نقدي لعملائنا بشروط متبادلة المنفعة. هذه الشركات هي شركائنا.
كيف نفعل هذا؟ تخيل أن هناك شركة مشروطة Yabloko في السوق. أفضل طريقة لجذب Yabloko إلى برنامج استرداد النقود لدينا هو مساعدته على بيع منتجه أو خدمته. المهمة هنا هي جذب جمهور للشريك. على سبيل المثال ، العملاء الذين يتم شراؤهم من المنافسين أو العملاء الذين لا يدركون وجود Yabloko. وأيضًا ، من الممكن أن يقوم Yabloko باختيار أكثر العملاء ملاءمة للملف الشخصي الذين يريدون بالفعل Yabloko ، فهم فقط لا يعرفون ذلك بعد - هذا يتعلق بالذكاء الاصطناعي والتعلم الآلي.
مهمة اختيار هذا الجمهور المستهدف تقع على عاتق المحللين. لدينا اثنان منهم ، وهناك العديد من الشركاء - أكثر من 1000. بالإضافة إلى ذلك ، لا يزال لدى المحللين الكثير من العمل المثير للاهتمام ، ومع نمو عدد الشركاء ، يتحول اختيار الجمهور المناسب إلى روتين. يجب أن يكون هذا الروتين آليًا ويتحول إلى نقرة واحدة على الزر (أو أفضل بدون زر على الإطلاق). بالإضافة إلى ذلك ، فإن العملية متعددة المراحل لتنفيذ مثل هذه المهام تستلزم الأخطاء التي تسببها العامل البشري. بعد ذلك سوف أخبرك كيف تمكنا من التخلص من هذا العمل الروتيني.
كيف نبني التحليلات
في Tinkoff.ru ، يستخدم معظم المحللين
Apache Zeppelin في مهامهم اليومية. لقد أخذنا هذه الأداة لفترة طويلة في الخدمة ونعمل على تطويرها بنشاط (حتى الالتزام بالمصدر المفتوح). يمكن لجميع الموظفين الوصول إلى مستودع عالمي للبيانات وإعداد التقارير ، أي جميع الموارد التحليلية Tinkoff.ru مع إمكانية استخدام لغة تحليلية مريحة.
Zeppelin مكتوب بلغة Java ويتضمن العديد من المترجمين الفوريين للغات والتقنيات الحديثة ، بما في ذلك Python و Hive و Spark و Groovy و R وغيرها الكثير. يتم تخزين البرامج النصية المكتوبة في أجهزة الكمبيوتر المحمولة ، والتي تتكون من فقرات ؛ خارجيًا ، تشبه واجهة المستخدم الخاصة ببيئة العمل إلى
Jupyter . والشاشة الرئيسية للتطبيق هي كما يلي:
يحتوي كل خط أعمال هنا على دليل العمل الخاص به مع التمييز بين حقوق القراءة والتحرير.
ميزة إضافية ضخمة بالنسبة لنا (المطورين) هي توفر
واجهة برمجة تطبيقات مريحة للغاية وتفاعلية. مع API ، تصبح الحياة أسهل. من خلال واجهة برمجة التطبيقات (API) باستخدام هذه الأداة ، يمكنك القيام بأي شيء تريده ، متجاوزًا واجهة المستخدم على الويب. لذلك جاءت الفكرة لدمج نتائج عمل المحللين في مشروعنا.
باختصار عن مشروعنا
الخلفية مكتوبة بلغة Java ، Frontend in Angular 5 (نظرًا لأن المشروع ليس شابًا ، يتم كتابة جزء من واجهة المستخدم في Vaadin ، التي نتخلص منها ببطء). معظم المشروع عبارة عن تطبيق ويب للمديرين للعمل معهم ، حيث يديرون علاقات مع الشركاء ، ويقدمون عروضًا خاصة جديدة ، ويرصدون تنفيذ مؤشرات الأداء الرئيسية الخاصة بهم ، إلخ. لدينا حساب شخصي لأحد الشركاء ، حيث يمكن لأي شريك للبنك مراقبة إحصائيات العروض الخاصة التي تم إطلاقها (المستحقات ، التنشيط ، إلخ.) ، اتفاقيات التنزيل والتوقيع ، الحسابات ، وعلاقات المستندات بشكل عام.
نرسل البيانات إلى بنك الهاتف النقال وبوابة الويب إلى قسم "المكافآت" من خلال خدمة SOAP على الويب. هناك هبوط مكتوب في React ، حيث يمكن لأي شخص ترك طلب للمشاركة في برنامج الولاء. قمنا بتطبيق العديد من الميكانيكا لحساب استرداد النقود والأقساط الخاصة ، والتكامل مع مختلف الخدمات المصرفية.
التكامل مع اباتشي زيبلين
تقليديًا ، لجذب شركاء جدد ، أرسل المديرون للمحللين خطابًا مع مجموعة من رغبات الشركاء لتوليد جمهور مستهدف. استخدم المحللون نصوصًا مكتوبة مسبقًا في حديقة الحيوانات ولصق النسخ السحري.
من الواضح ، مع إضفاء الطابع الرسمي الصحيح على المتطلبات ، يمكنك كتابة نص عالمي ، وهذا ما فعلناه. ولإدخال البيانات الرسمية ، كتبوا واجهة مستخدم مريحة. يبقى فقط تنفيذ العمل مع Apache Zeppelin في تطبيق الويب الخاص بنا. مخطط عمل هذا التكامل هو كما يلي:
يقوم المدير أثناء الاتصال بالشريك بإنشاء مهمة في التطبيق ، مع ملء المعلمات في النموذج لتشكيل الجمهور المستهدف. مثال على هذه المعلمات كما يلي:
- الفئات BCC و / أو أكواد MCC التي يتعامل فيها العميل أو يتم التعامل معه في فترة زمنية محددة لمبالغ معينة مع فحص متوسط معين.
- الشركات المنافسة التي ينقل فيها العميل أو ينقلها في فترة زمنية معينة.
وآخر
هناك الكثير من هذه المعلمات ، وكلها رسمية على واجهة المستخدم. بعد إدخال المعلمات الأولية ، يبدأ المدير عملية التوليد وتبدأ الخوارزمية عملها:
- نظرًا لأن جميع نصوصنا مكتوبة في دفتر ملاحظات واحد ولا نريد تغييره ، فإننا نقوم بنسخه في دليل منفصل. استجابة لطلباتنا ، تسترجع Zeppelin معرّف الاستنساخ ، والذي سنتصل من خلاله بالكمبيوتر المحمول الجديد. يعد استنساخ البرامج النصية العاملة مناسبًا أيضًا للإدارة ، حيث يمكننا دائمًا إلقاء نظرة على البرامج النصية التي تم تنفيذها لمهمة محددة وإيجاد المشكلة.
- بدءًا من الإصدار Zeppelin API 0.8 ، بعد إنشاء كمبيوتر محمول جديد ، تحتاج إلى تثبيت وصول CRUD إليه للإدارة اللاحقة.
- في إحدى الفقرات الأولى من كمبيوتر محمول يعمل ، كقاعدة عامة ، يتم الإعلان عن المتغيرات وتعيين قيمها الافتراضية الأولية ، والتي يجب استبدالها. في هذه المرحلة ، نقوم بإدخال فقرة إلى الكمبيوتر المحمول (مع تهيئة المتغيرات والبيانات الرسمية) ، والتي نشكلها قبل الإرسال.
- بعد ذلك ، مع طلب خفيف للأسلوب POST ، نطلق جهاز الكمبيوتر المحمول الخاص بنا للتنفيذ. أو بالأحرى ، نقوم بتشغيل فقراتنا واحدة تلو الأخرى ، من أجل مراقبة تنفيذ جميع البرامج النصية وعرض حالة جيل الجمهور المستهدف في التطبيق.
- في نهاية العملية ، يتلقى المدير إشعارًا (في حالة عدم مراقبة حالة التقدم). نتيجة البرامج النصية هي ملف CSV الذي تم إنشاؤه مع الجمهور ، ويتم تخزينه في دليل مشترك. عند إطلاق العروض الخاصة ، يمكننا توليد العديد من الجماهير ولصقها بنوع مختلف عند الإضافة إلى العرض. وبالنسبة إلى الجماهير ذات الأنواع المختلفة ، يمكننا ضبط شروط وحجم استحقاق استرداد النقود بمرونة.
قليلا من التحليلات وقحا
وفقًا للتقديرات التقريبية ، أدت أتمتة جمع الجمهور المستهدف إلى إطلاق أكثر من 30٪ من وقت عمل المحللين (دون احتساب الوقت الذي يقضيه التواصل بين المحللين والمديرين).
من يونيو 2018 إلى يناير 2019 ، تجاوز عدد مهام التوليد المكتملة 400. وفقًا لمديري الاتصالات والحصول على النتيجة المطلوبة ، أمضوا ما بين 0.5 إلى 4 ساعات ، مع متوسط الوقت اللازم لتكوين الجمهور المستهدف الذي يبلغ ساعتين تقريبًا ، تم حفظ أكثر من 800 ساعة عمل (أكثر من 100 يوم عمل).
في الختام
كان الشيء الأكثر أهمية الذي تمكن التكامل مع Zeppelin من تحقيقه هو تقليل العامل البشري في جميع مراحل عملية إنشاء الجمهور المستهدف. يتم تحديد الأخطاء في تكوين جمهور مناسب للشريك ، كقاعدة عامة ، بعد الاستحقاقات. إن الحصول على استرداد نقدي لأي شخص على التوالي ، بعد إطلاق العرض الخاص ، من الصعب للغاية تقليل التكاليف المالية التي تكبدتها ، وبالنسبة للأخطاء التي ارتكبت يتعين عليك دفعها غالياً.
ميزة إضافية كبيرة هي التحول في المسؤولية نحو المصدر الرئيسي للعملية ، كما "عنق الزجاجة" للعامل البشري الآن في منطقة تكوين البيانات الأولية من قبل المدير. وهذا يعني أن الشخص الذي ينشئ مهمة التوليد ويملأ المعلمات الأولية يفعل ذلك باهتمام متزايد.
حاليًا ، نواصل تطوير التكامل وأتمتة المهام التحليلية. لذلك ، باستخدام التشغيل عن بعد للنصوص المكتوبة باللغة Zeppelin ، من التطبيق ، نقوم بإنشاء أنواع مختلفة من التقارير التحليلية للمديرين الذين تم إعدادهم مسبقًا بشكل فردي عند الطلب.