Perjalanan Moskow meretas melalui mata para peserta

Tim IT Aeroclub di hack perjalanan Moskow

Halo! Anda mungkin pernah mendengar tentang hackathon pertama di Rusia dengan topik digitalisasi industri pariwisata. Perusahaan Aero Club IT diwakili oleh dua tim sekaligus, dan kami berhasil tidak hanya bersenang-senang, tetapi juga untuk mengembangkan proyek prototipe, mencoba tangan kami pada format kerja yang tidak biasa, dan berkomunikasi dengan peserta lain. Di bawah potongan - kisah salah satu tim kami!

Saat melamar, perlu untuk memilih salah satu dari 10 tugas yang diusulkan (trek). Ini adalah kasus-kasus perusahaan terkenal seperti MegaFon, Facebook, PANORAMA 360, MTS Startup Hub, Aeroexpress, Museum Pushkin, Taman Tsaritsyno, Discover Moscow, City of Discoveries, dan Russpass.

Kami melamar partisipasi dua tim sekaligus: "Tim 73" di trek "Aeroexpress" , dan "cakrawala baru" di "Tsaritsyno" . Yang pertama dipilih karena dekat dengan bidang aktivitas perusahaan kami (solusi perangkat lunak B2B), dan jika menang, kami dapat melanjutkan kerja sama dan pengembangan dengan baik. Yang kedua - orang-orang yang ingin melarikan diri dari tugas sehari-hari dan mencoba sesuatu yang baru.

Dalam obrolan umum acara tersebut, mereka mengatakan bahwa 1241 aplikasi diajukan (baik tim dan individu), dan, seperti yang mungkin sudah Anda duga, kami lolos seleksi! Dan kedua tim kami!
Satu-satunya yang tersisa adalah ikut serta dalam hackathon itu sendiri.

Hackathon


Semuanya seperti biasa di situs: pendaftaran, area makanan ringan, meja dengan nomor tim.
Pada jam 9:30 terjadi pembukaan singkat: beberapa kata dari penyelenggara, awal hackathon yang khusyuk, dan pekerjaan dimulai. Selanjutnya, kita akan berbicara atas nama peserta tim Tim 73, yang mengambil tugas dari Aeroexpress.

Pada awalnya, kami berbicara dengan para mentor: kami mempelajari apa yang ingin mereka lihat dalam keputusan, apa nuansa, dan apa yang harus dipilih. Tim-tim sedikit terkejut ketika ternyata sumber daya yang dijanjikan tidak akan disediakan. Menurut uraian tugas, kita bisa mendapatkan Aeroexpress API, hosting, nama domain, dan sertifikat untuk proyek tersebut. Seperti yang dijelaskan oleh mentor, API tidak dapat menyediakan untuk alasan keamanan, tetapi mereka tidak benar-benar menjelaskan sisanya. Untungnya, kami memiliki "opsi cadangan" - hosting pribadi. Akibatnya, dia menyelamatkan posisi kami.

Keputusan


Masalah utama yang perlu dipecahkan adalah otomatisasi penjualan tiket untuk Aeroexpress untuk badan hukum. orang. Kami melakukan penelitian pada proses saat ini dan, secara sederhana, terkejut. Seperti yang kami pelajari dari penawaran publik untuk badan hukum , pertama surat penerimaan dikirim dari perusahaan pelanggan sebagai permintaan untuk jumlah tiket yang diperlukan, yang menunjukkan rincian perusahaan. Berikutnya - faktur dibayar dan, yang paling penting, entah bagaimana tiket diterima dalam bentuk arsip yang dilindungi kata sandi. Yaitu, seperti yang Anda pahami, tingkat otomatisasi minimum.

Kami membuat sketsa CJM (peta perjalanan pelanggan), memilih fungsionalitas minimum yang diperlukan, dan memikirkan desainnya. Pada titik tertentu, kami beralasan sebagai berikut: masing-masing tim, dengan satu atau lain cara, akan menunjukkan solusi yang kira-kira sama: pendaftaran badan hukum. orang, pembelian tiket, penagihan, dan sebagainya. Untuk menonjol, Anda harus menemukan sesuatu yang istimewa. Minimal, Anda memerlukan desain yang baik, maka dengan latar belakang umum solusi kami akan sedikit lebih terlihat. Untungnya, ada desainer di tim kami yang lain, dan dia akan membantu kami dengan ini. Tetapi Anda membutuhkan sesuatu yang lain, sesuatu yang sama sekali tidak biasa untuk B2B. Dan kemudian kami memutuskan untuk menambahkan integrasi dengan Alice, asisten suara dari Yandex.

Ada beberapa alasan: yang utama - kami memiliki beberapa pengalamanbekerja dengannya untuk dengan cepat membuat prototipe yang bermanfaat. Yang lain - B2B, biasanya, dikaitkan dengan sesuatu yang membosankan dan formal, dan mendapatkan tiket melalui kolom pembicaraan adalah sesuatu yang baru. Selain itu, kami memiliki dua pengembang backend, dan mendorong bersama dalam proyek yang sama sangat tidak nyaman, dan secara paralel kami akan membuat fungsionalitas utama dan tambahan.
Saya akan mulai dengan solusi utama - Aeroexpress Wholesale Portal. Menurut ide kami, itu terdiri dari dua bagian: front-end dan, tentu saja, back-end.

Paling depan


Front-end kami adalah penganut Angular, karenanya merupakan pilihan kerangka kerja ini. "Out of the Box" sudut menyediakan lingkungan awal yang baik, di mana Anda tidak perlu repot dengan konfigurasi, perutean, dan menghubungkan ke backend - apa yang Anda butuhkan untuk hackathon. Selain itu, pengembang kami telah bekerja dengan dia untuk waktu yang lama dan telah mengumpulkan beberapa perpustakaannya di mana Anda dapat menghemat sedikit waktu di hackathon.

Akibatnya, kami mendapat tampilan depan seperti itu:


Kami mencoba membuat penampilan modern, bergaya, menjaga warna-warna Aeroexpress.

Di sini kami telah menerapkan fungsi berikut:

  1. Cari nama perusahaan dengan TIN
  2. Pendaftaran perusahaan dan penghubung dengan indikasi perkiraan volume penjualan tiket per bulan.
  3. Otorisasi karyawan perusahaan
  4. Pemesanan tiket
  5. Jumlah perjalanan yang akan datang
  6. Sejarah pesanan
  7. Akun pribadi manajer Aeroexpress

Kami mencoba membuat pendaftaran perusahaan sesederhana mungkin di portal: perwakilannya hanya perlu mengetahui NPWP legal. orang, dan masukkan di bidang yang sesuai. Jika nama yang muncul sesuai, Anda dapat melanjutkan. Pendaftaran di portal secara bersamaan merupakan aplikasi untuk kerja sama dengan Aeroexpress. Para mentor menyarankan bahwa akan lebih mudah bagi mereka untuk mempertimbangkan aplikasi semacam itu jika perwakilan akan menunjukkan perkiraan volume penjualan tiket per bulan, untuk ini kami menambahkan bidang yang sesuai.

Pada pandangan pertama, sepertinya tidak banyak yang dilakukan, tetapi solusi kami memiliki desain yang sangat indah dan dirancang dengan baik. Itu dibuat dari awal, tanpa menggunakan template yang sudah jadi. Menurut pengalaman sebelumnya, hackathon sering kali memenangkan keputusan yang tidak begitu berhasil, tetapi "dibungkus dengan kemasan yang indah", dan kali ini kami memutuskan untuk mengandalkan penampilan yang indah. Ke depan, saya akan mengatakan bahwa para mentor senang dengan desain kami, tetapi menilai solusi tepat dengan jumlah fungsi yang diimplementasikan dan prospek masa depan dalam menerapkan solusi (yang dipikirkan oleh beberapa tim dengan baik).

Backend


Kedua pengembang belakang kami adalah penajam berpengalaman (mereka menulis dalam C #), oleh karena itu punggungnya juga didasarkan pada .net core. Versi 2.1 dipilih, karena aplikasi di atasnya pasti naik pada hosting cadangan, dan berbahaya untuk bereksperimen pada hackathon - Anda dapat kehilangan waktu dan dibiarkan tanpa solusi. Kami mendapat web-api yang biasa, dengan blackjack dan DI.
Di sini kami telah melakukan semua yang diperlukan untuk "depan":

  1. Cari informasi perusahaan dengan TIN
  2. Pendaftaran perusahaan dan penghubungnya
  3. Otentikasi Kata Sandi
  4. Otorisasi Token Pembawa
  5. Mendapatkan Informasi Pengguna
  6. Mendapatkan daftar karyawan perusahaan dari pengguna saat ini
  7. Buat Pesanan
  8. Mengirim tiket melalui pos setelah membuat pesanan
  9. Mengirim tiket melalui surat ke pengguna yang diminta (untuk integrasi eksternal)
  10. Mendapatkan informasi tentang semua tiket perusahaan
  11. Daftar Pesanan
  12. Daftar perusahaan terdaftar

Dari yang menarik - integrasi dengan pencarian organisasi oleh TIN atau BIN di Dadata , untuk pendaftaran badan hukum yang mudah . wajah. Singkatnya, backend menerima permintaan "menemukan perusahaan" dengan TIN yang diberikan, dan mengirimkan informasi ini ke API layanan. Sebagai tanggapan, jika perusahaan ditemukan, kami mendapatkan informasi tentangnya: nama pendek (kami berikan jawabannya), dan detailnya. Sangat berguna untuk menyimpan data yang diperoleh di suatu tempat, karena mereka akan berguna dalam pembentukan akun: itu akan cukup bagi pengguna untuk memeriksa kebenarannya, yang jauh lebih mudah daripada "mengemudi" sendiri.

Keterampilan Asisten Suara


Keterampilan untuk asisten biasanya adalah layanan web yang bekerja dengan protokol permintaan dan respons tertentu. Seperti yang telah disebutkan, kami memilih integrasi dengan Alice sebagai pelengkap solusi utama. Anda dapat mempelajari lebih lanjut tentang protokol untuk bekerja dengannya dari dokumentasi , dan juga dalam artikel terbaru tentang keterampilan . Dalam kasus kami, layanan web keterampilan juga didasarkan pada .net core.

Pengguna harus nyaman berinteraksi dengan skill, seolah-olah dia sedang berbicara dengan teman dekatnya. Untuk melakukan ini, setidaknya, perlu untuk mempertahankan konteks percakapan, untuk memahami objek apa yang dibicarakan pengguna, dan untuk menjawab topik. Jika pengguna menyimpang dari tujuan dialog, Anda harus dapat mengembalikannya ke jalur yang benar. Dan semua ini harus terjadi tidak lebih dari 3 detik - itulah seberapa banyak waktu platform Yandex.Dialog memberi Anda kemampuan untuk menjawab. Jika jawaban tidak diterima dalam waktu yang ditentukan, dialog akan berakhir, dan pengguna akan diberi tahu bahwa keterampilan tidak merespons, dan mereka tidak mungkin ingin kembali lagi.

Anda dapat mengatasi tugas ini dengan bantuan berbagai layanan yang dirancang untuk mempertahankan dialog dengan pengguna. Kami sudah memiliki pengalaman dengan Dialogflow.dari Google, jadi pilihlah. Paling tidak, ada alternatif dari Rusia untuknya - Aimylogic dari JustAI, tapi saya belum harus bekerja dengannya.

Dalam kasus kami, seharusnya ada dialog yang cukup sederhana: pengguna meminta untuk mengiriminya tiket, dan jika ia segera menyebutkan namanya, kami mengirimkannya. Jika tidak, kami menentukan nama lengkap, dan kemudian kami sudah mengirim.

Menyempurnakan nama pengguna di semua biaya

Klarifikasi nama pengguna dengan biaya berapa pun

Menurut pendapat kami, hal yang paling sulit dalam tugas ini adalah untuk mendapatkan nama pengguna. Jika mereka tidak bernama, Anda harus mendapatkannya dari pengguna, dan baru kemudian melakukan tindakan yang diinginkan. Untungnya, DF (Dialogflow) memungkinkan Anda melakukan ini di luar kotak.
Untuk melakukan ini, dalam maksud (Maksud), di mana nama seharusnya diterima, Anda perlu menambahkan frasa pelatihan yang berisi nama lengkap dan menandai mereka sehingga informasi ini jatuh ke dalam parameter maksud yang sesuai. Jika namanya dikenali, parameter akan berisi nilai ini.

Frase pelatihan yang ditandai

Frase pelatihan yang ditandai

Parameter Intent

Parameter Intent

Jika tidak, Anda perlu mendapatkan parameter ini dengan biaya berapa pun. Untuk melakukan ini, tandai parameter dengan nama lengkap sebagai wajib (centang di kolom "Diperlukan"), dan tentukan frasa klarifikasi untuk itu ("Prompt"). Sekarang, jika perlu, DF akan memberikan mereka kembali sebagai tanggapan. Dan jika namanya dikenali - maka jawaban yang biasa untuk niat ini, serta tindakan ("Aksi").

Klarifikasi Frasa

Klarifikasi Frasa

Jawaban Umum

Jawaban biasa

Maka semuanya sederhana: jika nama tindakan diterima dan respons DF memiliki semua parameter yang diperlukan, kami melakukan tindakan ini dan meneruskan respons ke pengguna. Jika tidak, kirim teks klarifikasi.

Untuk mengirim tiket, keterampilan harus memenuhi permintaan ke bagian belakang portal kami dengan tajuk otorisasi dan nama pengguna di badan. Perusahaan akan ditentukan oleh judul, dan dengan nama mudah untuk menemukan pengguna yang tepat. Dalam kehidupan, gelar dapat diperoleh dengan mengesahkan keterampilan, tetapi pada hackathon kita hanya “menyandikannya” untuk menghemat waktu. Dengan nama lengkap sedikit lebih rumit.

Anda dapat menggunakan nama yang dikenali dalam DF, tetapi ada masalah kecil: jika pengguna menyebut dirinya tidak dalam kasus nominatif, maka parameter ini juga akan ditulis dalam parameter. Di backend, nama pengguna ditulis dalam bentuk normal (dalam kasus nominatif), dan ketidakcocokan ejaan akan membuatnya sulit ditemukan.

Dan di sini kami perhatikan bahwa dalam permintaan dari Alice datanglah nama-nama yang dikenal, dinormalisasi dan dicatat dalam bidang yang berbeda!

Nama yang Diakui

Nama yang diakui

Sayangnya, NLU dari Yandex-dialog tidak dapat menangani nama yang lebih rumit, misalnya Mamedov Polad Murtuza oglu, tetapi opsi ini juga cocok untuk demonstrasi di hackathon.

Akibatnya, kami mendapat rantai seperti itu:

Bagan Kueri

Diagram kueri

Pada akhir hackathon, kami memiliki ketiga bagian dari solusi kami, yang kami tunjukkan kepada para mentor. Dengan reaksi mereka, sulit untuk mengatakan apakah mereka menyukai perkembangan kami atau tidak, tetapi, seperti yang kemudian kami pelajari dari percakapan pribadi, demonstrasi integrasi dengan Alice jelas memiliki efek wow yang diharapkan.

Suatu komisi teknis juga terjadi selama pekerjaan: masing-masing tim harus menyediakan akses ke repositori mereka, dan membuat “komitmen” pada mereka setidaknya sekali dalam satu jam. Juga, kadang-kadang perwakilan komisi mendatangi kami dan mendiskusikan solusi yang sedang dikembangkan. Ngomong-ngomong, Anda bisa mengetahui kesan mereka tentang hackathon di sini .

Pemenang


Setelah pidato dari pembicara yang diundang, nada akhir dari tim yang menang dalam satu tugas atau yang lain dimulai. Tim AeroTeam memenangkan trek Aeroexpress. Seperti yang dikatakan oleh mentor kepada kami (mereka juga juri), tim inilah yang memiliki konsep yang paling dipikirkan untuk pengembangan lebih lanjut dari solusi, dan orang-orang memperhitungkan dan bekerja pada beberapa poin yang bahkan pelanggan sendiri tidak memikirkannya (sayangnya, mereka tidak menyebutkan yang mana). Untuk kemenangan, kami tidak memiliki beberapa detail yang benar-benar menarik bagi mentor dari sudut pandang bisnis. Mereka memilih solusi yang cukup dikembangkan untuk memulai pengembangannya "sekarang", yang berarti mereka sangat objektif dalam keputusan mereka, dan ini luar biasa.

Ketika kami kemudian belajar dari percakapan dengan para peserta AeroTeam, mereka berkumpul dalam tim yang berantakan: mereka belajar tentang hackathon dari sumber yang sama sekali berbeda, entah bagaimana masuk ke obrolan umum acara tersebut, dan di sana mereka bersatu. Ada tiga orang di AeroTeam. Pada titik tertentu, mereka juga ditawari desainer UX, tetapi mereka menolak, dan melakukannya dengan cukup baik tanpa peran ini. Orang-orang itu tidak memiliki prasyarat khusus untuk menang (misalnya, dalam bentuk beberapa perkembangan), dan mereka berhasil melakukan pekerjaan yang sangat kuat, yang, menurut pendapat saya, memang pantas mendapatkan kemenangan.

Tim kami yang lain, sayangnya, juga tidak naik ke atas panggung dengan nada, yang berarti bahwa ia tidak menang di jalurnya, tetapi kami akan menceritakan kisah ini lain kali. Sementara itu, siapa yang menjadi pemenang super hackathon? Nominasi ini diberikan kepada tim, yang, menurut juri, membuat keputusan terbaik di antara semua pemenang dalam satu kategori atau lainnya - Golden PSG. Mereka mengerjakan tugas dari dek observasi Panorama 360.. Pada tugas, diasumsikan bahwa pengunjung situs akan difoto dengan "chromakey" (kanvas polos), pilih latar belakang warna-warni lain, dan segera cetak foto. Orang-orang melangkah lebih jauh, dan solusi mereka memungkinkan Anda untuk menghapus latar belakang apa pun (dan secara terprogram lebih sulit dilakukan daripada menghapus warna yang sama) di sekitar objek utama (orang), dan menggantinya dengan yang lain. Menurut pendapat kami, keputusan ini juga layak untuk dimenangkan.

Peserta sendiri adalah mahasiswa departemen anggaran ITMO. Seperti yang dikatakan orang-orang itu dalam percakapan pribadi, mereka selalu ada di situs, pada malam hari mereka tidak pergi ke mana pun, dan "membajak" selama hampir 26 jam dari 30 (sesekali, tentu saja). Mereka sudah memiliki pengalaman berpartisipasi dalam hackathons, tetapi hadiah diambil untuk pertama kalinya.

temuan


Pertama-tama, ada baiknya mencurahkan lebih banyak waktu untuk implementasi keputusan utama, sehingga juri dapat "menyentuhnya", melihatnya langsung di prototipe, dan bukan pada mock-up dan kata-kata. Perlu juga dipertimbangkan prospek lebih lanjut untuk pengembangan proyek. Hal lain dianggap sama, hakim dapat memberikan preferensi pada keputusan yang memenuhi tidak hanya tugas saat ini, tetapi juga tujuan yang menyertai pelanggan.

Namun demikian, jika Anda entah bagaimana bisa menonjol - untuk membuat desain yang indah, atau untuk menerapkan ide yang tidak biasa, ini pasti layak digunakan. Dari pengalaman berpartisipasi dalam kompetisi lain, ini dapat membantu untuk menang, jika tidak di utama, maka setidaknya dalam nominasi tambahan - misalnya, untuk menerima "hadiah penonton", jika ada. Atau para peserta dan juri akan dikenang karena pendekatan mereka yang tidak biasa.

Sebelum acara, ada baiknya melakukan beberapa riset tentang bisnis pelanggan untuk lebih mengetahui “rasa sakit” -nya dan menghasilkan sesuatu untuk menghilangkannya. Gagasan dan perkembangan kecil bukanlah "solusi siap pakai", sehingga aturan hackathon tidak akan dilanggar, dan akan ada lebih banyak waktu dalam kompetisi itu sendiri.

Anda tidak harus bergantung pada penyediaan sumber daya oleh pelanggan, bahkan jika itu ditentukan dalam tugas. Secara umum, seseorang harus selalu dipersiapkan dengan baik untuk hackathon: meningkatkan infrastruktur minimum yang diperlukan, mempertimbangkan menerbitkan proyek, mengeksplorasi API layanan yang diperlukan, dan sejenisnya. Pasti layak mempertimbangkan solusi untuk masalah seperti akses Anda sendiri ke Internet, karena sebagian besar peristiwa ini mengalami kesulitan dengan ini. Di sini, misalnya, sebagian besar waktu tidak ada koneksi yang stabil. Ironisnya, simbol hackathon adalah dinosaurus offline, yang dapat dilihat di Chrome ketika Anda tidak memiliki internet.

Saya ingin secara terpisah mencatat organisasi hackathon: secara umum, itu yang terbaik. Setiap tahap berlangsung tepat waktu, di situs itu sendiri juga dalam urutan penuh: ada cukup makanan untuk semua orang, ada banyak makanan ringan. Pada hari kedua, secara teori, adalah mungkin untuk datang ke bagian publik setelah pendaftaran pendahuluan, tetapi, sebagai hasilnya, siapa pun bisa sampai di sana. Pesta kecil dengan grup musik dan meja prasmanan juga sukses! Kami mengucapkan terima kasih dan rasa hormat kami kepada penyelenggara. Peringkat kami - empat dari lima dinosaurus hijau - jadi ada sesuatu yang harus diperjuangkan!

Itulah peretasan perjalanan Moskow bagi kami: sesuatu dalam solusi kami buruk, dan ada sesuatu yang baik. Bagaimanapun, kami akan memperhitungkan kesalahan kami dan akan mengingatnya di kompetisi berikutnya. Secara umum, berpartisipasi dalam hackathon, khususnya dalam tim kolega, sangat bagus! Bagi kami, itu bukan hanya pengalaman emas, tetapi juga membangun tim terbaik. Kami bermain sangat keren, melakukan hal-hal gila tanpa tidur dan istirahat. Kami yakin bahwa kami dapat bekerja secara produktif pada tugas-tugas kompleks dalam waktu singkat dan dalam situasi yang penuh tekanan. Yang utama adalah menikmati prosesnya!

Jika Anda tertarik pada detail teknis implementasi solusi kami - tulis di komentar, kami akan dengan senang hati memberi tahu Anda.
Jangan mengucapkan selamat tinggal, sampai jumpa di hub
Tim 73 Tim, Aero Club IT

Tim IT Aeroclub di hack perjalanan Moskow

All Articles