اختراق السفر موسكو من خلال أعين المشاركين

فرق تكنولوجيا المعلومات Aeroclub في اختراق السفر في موسكو

مرحبا! ربما سمعت عن أول هاكاثون في روسيا حول موضوع رقمنة صناعة السياحة. تم تمثيل شركة AeroClub IT بفريقين في وقت واحد ، وتمكنا ليس فقط من قضاء وقت ممتع ، ولكن أيضًا في تطوير مشاريع النماذج الأولية ، وتجربتنا بتنسيق عمل غير عادي ، والتواصل مع المشاركين الآخرين. تحت الخفض - قصة أحد فرقنا!

عند التقديم ، كان من الضروري اختيار إحدى المهام العشرة (المسارات) المقترحة. كانت هذه حالات لشركات معروفة مثل MegaFon و Facebook و PANORAMA 360 و MTS Startup Hub و Aeroexpress ومتحف Pushkin و Tsaritsyno Park و Discover Moscow و City of Discoveries و Russpass.

لقد تقدمنا ​​بطلب مشاركة فريقين في وقت واحد: "Team 73" في مسار "Aeroexpress" و "New horizons" في "Tsaritsyno" . تم اختيار الخيار الأول لأنه قريب من مجال نشاط شركتنا (حلول برامج B2B) ، وفي حالة الفوز ، يمكننا مواصلة التعاون والتطوير. والثاني - الرجال الذين أرادوا الهروب من المهام اليومية وتجربة شيء جديد.

في المحادثة العامة للحدث ، قالوا إن 1241 طلبًا تم تقديمها (الفريق والفرد على حد سواء) ، وكما قد تخمن بالفعل ، فقد تجاوزنا التحديد! وكلا الفريقين!
الشيء الوحيد المتبقي هو المشاركة في هاكاثون نفسها.

هاكاثون


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

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

القرار


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

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

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

نهاية المقدمة


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

ونتيجة لذلك ، حصلنا على واجهة أمامية:


حاولنا أن نجعل المظهر حديثًا وأنيقًا ، مع الحفاظ على ألوان Aeroexpress.

هنا قمنا بتنفيذ الوظائف التالية:

  1. البحث عن اسم الشركة بواسطة TIN
  2. تسجيل شركة وشخص اتصال مع الإشارة إلى الحجم التقريبي لمبيعات التذاكر شهريًا.
  3. إذن موظف الشركة
  4. طلب تذكرة
  5. عدد الرحلات القادمة
  6. تاريخ الأوامر
  7. الحساب الشخصي لمدير Aeroexpress

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

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

الخلفية


كل من مطورينا الخلفيين هم خبراء حادون (يكتبون في C #) ، وبالتالي فإن الجزء الخلفي يعتمد أيضًا على .net core. تم اختيار الإصدار 2.1 ، لأن التطبيقات الموجودة عليه ترتفع بالتأكيد على استضافة النسخ الاحتياطي ، ومن الخطر أن تجرب على هاكاثون - يمكنك أن تضيع الوقت وتترك بدون حل. حصلنا على واجهة الويب المعتادة ، مع لعبة ورق و DI.
هنا قمنا بكل ما هو ضروري لـ "الجبهة":

  1. البحث عن معلومات الشركة عن طريق TIN
  2. تسجيل الشركة ومسؤول الاتصال بها
  3. مصادقة كلمة المرور
  4. تفويض الرمز المميز لحامله
  5. الحصول على معلومات المستخدم
  6. الحصول على قائمة موظفي الشركة للمستخدم الحالي
  7. إنشاء النظام
  8. إرسال تذكرة بالبريد بعد إنشاء أمر
  9. إرسال تذكرة بالبريد إلى المستخدم المطلوب (للتكامل الخارجي)
  10. الحصول على معلومات حول جميع تذاكر الشركة
  11. أوامر الإدراج
  12. تسجيل الشركات المسجلة

من المثير للاهتمام - التكامل مع البحث عن المنظمات عن طريق TIN أو BIN في Dadata ، لتسهيل تسجيل الكيانات القانونية. الوجوه. باختصار ، تتلقى الواجهة الخلفية طلب "العثور على شركة" مع رقم التعريف الضريبي (TIN) المحدد ، وترسل هذه المعلومات إلى واجهة برمجة تطبيقات الخدمة. ردا على ذلك ، إذا تم العثور على الشركة ، نحصل على معلومات عنها: اسم قصير (نعطيه في الجواب) ، وتفاصيل. من المفيد حفظ البيانات التي تم الحصول عليها في مكان ما ، لأنها ستكون مفيدة في تشكيل الحسابات: سيكون كافياً للمستخدم للتحقق من صحتها ، وهو أسهل بكثير من "القيادة" بمفرده.

مهارة مساعد الصوت


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

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

يمكنك التعامل مع هذه المهمة بمساعدة مختلف الخدمات المصممة للحفاظ على حوار مع المستخدم. لدينا بالفعل بعض الخبرة مع Dialogflow.من Google ، لذلك اختارها. على الأقل ، هناك بديل من روسيا بالنسبة له - Aimylogic من JustAI ، لكن لم يكن علي العمل معه حتى الآن.

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

تكرير اسم المستخدم بأي ثمن

توضيح اسم المستخدم بأي ثمن

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

عبارات التدريب الملحوظة

عبارات التدريب الملحوظة

معلمات النية

معلمات Intent

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

توضيح العبارات

توضيح العبارات

إجابات شائعة

إجابات عادية

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

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

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

وهنا لاحظنا أنه في طلب Alice تأتي أسماء معترف بها ويتم تطبيعها وتسجيلها في حقول منفصلة!

الاسم المعترف به

الاسم المعترف

لسوء الحظ ، لا تتوافق NLU الخاصة بحوارات Yandex بشكل جيد مع الأسماء الأكثر تعقيدًا ، على سبيل المثال Mamedov Polad Murtuza oglu ، ولكن هذا الخيار مناسب أيضًا للعرض في hackathon.

ونتيجة لذلك ، حصلنا على مثل هذه السلسلة:

مخطط الاستعلام

مخطط الاستعلام

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

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

الفائزون


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

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

فريقنا الآخر ، لسوء الحظ ، لم يذهب على خشبة المسرح مع الملعب ، مما يعني أنها لم تفز في مسارها ، لكننا سنخبر هذه القصة مرة أخرى. في هذه الأثناء ، من أصبح الفائز الأكبر في هاكاثون؟ تم منح هذا الترشيح للفريق ، الذي اتخذ ، حسب لجنة التحكيم ، أفضل قرار بين جميع الفائزين في فئة أو أخرى - Golden PSG. لقد عملوا على مهمة من سطح المراقبة Panorama 360.. عند التكليف ، تم افتراض أنه سيتم تصوير زوار الموقع مقابل "chromakey" (قماش عادي) ، واختيار خلفية ملونة أخرى بدلاً من ذلك ، وطباعة الصورة على الفور. ذهب الرجال إلى أبعد من ذلك ، ويسمح لك حلهم بإزالة أي خلفية (وبرمجياً ، من الصعب جدًا إزالتها من إزالة نفس اللون) حول الكائن الرئيسي (الشخص) ، واستبداله بأخرى. في رأينا أن هذا القرار يستحق الانتصار.

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

الموجودات


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

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

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

يجب ألا تعتمد على توفير الموارد من قبل العميل ، حتى إذا تم تحديدها في المهمة. بشكل عام ، يجب على المرء أن يكون دائمًا مستعدًا جيدًا ل hackathon: رفع الحد الأدنى من البنية التحتية اللازمة ، والنظر في نشر مشروع ، والبحث في API للخدمات اللازمة ، وما شابه ذلك. من الجدير بالتأكيد التفكير في حل لمشكلة مثل وصولك الخاص إلى الإنترنت ، لأن معظم هذه الأحداث تواجه صعوبات في ذلك. هنا ، على سبيل المثال ، لم يكن هناك اتصال مستقر في معظم الوقت. المفارقة هي أن رمز الهاكاثون كان ديناصور غير متصل بالإنترنت ، والذي يمكن رؤيته في Chrome عندما لا يكون لديك إنترنت.

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

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

إذا كنت مهتمًا بالتفاصيل الفنية لتنفيذ حلنا - اكتب في التعليقات ، فسنخبرك بكل سرور.
لا تقل وداعا ، أراك في المحور
Team 73 Team، Aero Club IT

فرق تكنولوجيا المعلومات Aeroclub في اختراق السفر في موسكو

All Articles