Moskau Reise Hack durch die Augen der Teilnehmer

Aeroclub IT-Teams bei Moskau Travel Hack

Hallo! Sie haben wahrscheinlich vom ersten Hackathon in Russland zum Thema Digitalisierung der Tourismusbranche gehört. Das Unternehmen AeroClub IT war mit zwei Teams gleichzeitig vertreten, und es gelang uns nicht nur, eine tolle Zeit zu haben, sondern auch Prototypenprojekte zu entwickeln, uns an einem ungewöhnlichen Arbeitsformat zu versuchen und mit anderen Teilnehmern zu kommunizieren. Under the Cut - die Geschichte eines unserer Teams!

Bei der Bewerbung musste eine der 10 vorgeschlagenen Aufgaben (Tracks) ausgewählt werden. Dies waren Fälle von so bekannten Unternehmen wie MegaFon, Facebook, PANORAMA 360, MTS Startup Hub, Aeroexpress, Puschkin-Museum, Tsaritsyno Park, Discover Moscow, City of Discoveries und Russpass.

Wir haben die gleichzeitige Teilnahme von zwei Teams beantragt: "Team 73" in der Strecke "Aeroexpress" und "New Horizons" in "Tsaritsyno" . Die erste wurde ausgewählt, weil sie nahe am Tätigkeitsbereich unseres Unternehmens liegt (B2B-Softwarelösungen), und im Falle eines Sieges könnten wir die Zusammenarbeit und Entwicklung fortsetzen. Die zweite - die Jungs, die den Alltagsaufgaben entfliehen und etwas Neues ausprobieren wollten.

Im allgemeinen Chat der Veranstaltung sagten sie, dass 1241 Bewerbungen eingereicht wurden (sowohl im Team als auch im Einzel), und wie Sie vielleicht bereits erraten haben, haben wir die Auswahl bestanden! Und unsere beiden Teams!
Das einzige was noch übrig war, war am Hackathon selbst teilzunehmen.

Hackathon


Auf der Baustelle war alles wie gewohnt: Registrierung, Snackbereich, Tische mit Teamnummern.
Um 9:30 Uhr fand eine kurze Eröffnung statt: ein paar Worte der Organisatoren, der feierliche Start des Hackathons und die Arbeit begannen. Als nächstes werden wir im Namen der Teilnehmer des Team 73-Teams sprechen, das die Aufgabe von Aeroexpress übernommen hat.

Zuerst haben wir mit den Mentoren gesprochen: Wir haben gelernt, was sie in der Entscheidung sehen möchten, welche Nuancen es gibt und was sie bevorzugen. Die Teams waren ein wenig überrascht, als sich herausstellte, dass die versprochenen Ressourcen nicht bereitgestellt wurden. Entsprechend der Beschreibung der Aufgabe könnten wir die Aeroexpress-API, das Hosting, den Domainnamen und das Zertifikat für das Projekt erhalten. Wie die Mentoren erklärten, kann die API aus Sicherheitsgründen keine Informationen bereitstellen, den Rest haben sie jedoch nicht wirklich erklärt. Glücklicherweise hatten wir eine "Backup-Option" - persönliches Hosting. Infolgedessen hat er unsere Position gerettet.

Entscheidung


Das Hauptproblem, das gelöst werden musste, war die Automatisierung des Ticketverkaufs für Aeroexpress für juristische Personen. Personen. Wir haben einige Untersuchungen zum aktuellen Prozess durchgeführt und waren, gelinde gesagt, unter Schock. Wie wir aus einem öffentlichen Angebot für juristische Personen erfahren haben , wird vom Kundenunternehmen zunächst ein Zulassungsschreiben als Anfrage für die erforderliche Anzahl von Tickets gesendet, in dem die Details des Unternehmens angegeben sind. Weiter - die Rechnung wird bezahlt und vor allem werden die Tickets irgendwie in Form eines passwortgeschützten Archivs empfangen. Das ist, wie Sie verstehen, der minimale Automatisierungsgrad.

Wir haben CJM (Customer Journey Map) skizziert, die minimal erforderliche Funktionalität ausgewählt und über das Design nachgedacht. Irgendwann haben wir Folgendes begründet: Jedes Team wird auf die eine oder andere Weise ungefähr die gleichen Lösungen zeigen: Registrierung von juristischen Personen. Personen, Ticketkauf, Abrechnung und so weiter. Um irgendwie aufzufallen, musste man sich etwas Besonderes einfallen lassen. Zumindest brauchen Sie ein gutes Design, dann wird unsere Lösung vor dem allgemeinen Hintergrund etwas auffälliger. Glücklicherweise gibt es eine Designerin in unserem anderen Team, die uns dabei helfen wird. Aber Sie brauchten etwas anderes, etwas völlig Ungewöhnliches für B2B. Und dann haben wir beschlossen, die Integration mit Alice, der Sprachassistentin von Yandex, hinzuzufügen.

Es gab mehrere Gründe: den Hauptgrund - wir haben einige ErfahrungenArbeiten Sie mit ihr zusammen, um schnell einen mehr oder weniger nützlichen Prototyp zu erstellen. Eine andere - B2B - ist in der Regel mit etwas Langweiligem und Formalem verbunden, und Tickets über eine Diskussionssäule zu erhalten, ist etwas Neues. Darüber hinaus haben wir zwei Backend-Entwickler, und das Zusammenführen im selben Projekt ist nicht sehr praktisch. Parallel dazu werden wir sowohl die Hauptfunktionalität als auch die zusätzliche Funktionalität erstellen.
Ich beginne mit der Hauptlösung - Aeroexpress Wholesale Portal. Nach unserer Idee besteht es aus zwei Teilen: dem Frontend und natürlich dem Backend.

Vorderes Ende


Unser Frontend ist ein Anhänger von Angular, daher die Wahl dieses speziellen Frameworks. Angular "out of the box" bietet eine gute Startumgebung, in der Sie sich nicht um Konfiguration, Routing und Verbindung zum Backend kümmern müssen - was Sie für einen Hackathon benötigen. Außerdem arbeitet unser Entwickler schon lange mit ihm zusammen und hat mehrere seiner Bibliotheken angesammelt, mit denen Sie beim Hackathon ein wenig Zeit sparen können.

Als Ergebnis haben wir ein solches Frontend bekommen:


Wir haben versucht, das Erscheinungsbild modern und stilvoll zu gestalten und dabei die Farben von Aeroexpress beizubehalten.

Hier haben wir folgende Funktionalität implementiert:

  1. Suchen Sie den Firmennamen nach TIN
  2. Registrierung eines Unternehmens und einer Kontaktperson mit Angabe des ungefähren Ticketverkaufsvolumens pro Monat.
  3. Autorisierung des Unternehmensmitarbeiters
  4. Ticketbestellung
  5. Anzahl der bevorstehenden Reisen
  6. Auftragsgeschichte
  7. Persönliches Konto des Aeroexpress-Managers

Wir haben versucht, die Registrierung des Unternehmens auf dem Portal so einfach wie möglich zu gestalten: Der Vertreter muss nur die TIN des Gesetzes kennen. Personen, und geben Sie es in das entsprechende Feld. Wenn der angezeigte Name angemessen ist, können Sie fortfahren. Die Registrierung im Portal ist gleichzeitig ein Antrag auf Zusammenarbeit mit Aeroexpress. Die Mentoren schlugen vor, dass es für sie einfacher wäre, solche Anträge zu prüfen, wenn die Vertreter das ungefähre Volumen des Ticketverkaufs pro Monat angeben würden. Dazu haben wir ein entsprechendes Feld hinzugefügt.

Auf den ersten Blick scheint es, dass nicht so viel getan wurde, aber unsere Lösung hat ein sehr schönes und gut gestaltetes Design. Es wurde von Grund auf neu erstellt, ohne vorgefertigte Vorlagen zu verwenden. Nach früheren Erfahrungen haben Hackathons oft Entscheidungen gewonnen, die nicht so gut ausgearbeitet, sondern „in schöne Verpackungen eingewickelt“ waren, und diesmal haben wir uns auf ein schönes Erscheinungsbild verlassen. Mit Blick auf die Zukunft möchte ich sagen, dass die Mentoren von unserem Design begeistert waren, die Lösungen jedoch genau anhand der Anzahl der implementierten Funktionen und der Zukunftsaussichten für die Anwendung der Lösung beurteilt haben (was einige Teams gut durchdacht haben).

Backend


Unsere beiden Back-Entwickler sind erfahrene Scharfschützen (sie schreiben in C #), daher basiert der Back auch auf dem .net-Kern. Version 2.1 wurde gewählt, weil die darauf befindlichen Anwendungen definitiv auf einem Backup-Hosting steigen und es gefährlich ist, an einem Hackathon zu experimentieren - Sie können Zeit verlieren und ohne Lösung bleiben. Wir haben die übliche Web-API mit Blackjack und DI.
Hier haben wir alles Notwendige für die "Front" getan:

  1. Suchen Sie nach Unternehmensinformationen nach TIN
  2. Registrierung des Unternehmens und seiner Kontaktperson
  3. Passwortauthentifizierung
  4. Inhaber-Token-Autorisierung
  5. Benutzerinformationen abrufen
  6. Abrufen der Liste der Mitarbeiter des Unternehmens des aktuellen Benutzers
  7. Bestellung anlegen
  8. Senden eines Tickets per Post nach dem Erstellen einer Bestellung
  9. Senden eines Tickets per E-Mail an den angeforderten Benutzer (zur externen Integration)
  10. Informationen zu allen Firmenkarten erhalten
  11. Listing Orders
  12. Börsennotierte Unternehmen auflisten

Von interessant - Integration in die Suche nach Organisationen nach TIN oder BIN in Dadata , zur einfachen Registrierung von juristischen Personen . Gesichter. Kurz gesagt, das Backend empfängt eine Anforderung zum Suchen eines Unternehmens mit der angegebenen TIN und sendet diese Informationen an die Service-API. Wenn das Unternehmen gefunden wird, erhalten wir als Antwort Informationen darüber: einen Kurznamen (wir geben ihn in der Antwort an) und Details. Es ist nützlich, die erhaltenen Daten irgendwo zu speichern, da sie bei der Bildung von Konten hilfreich sind: Es reicht aus, wenn der Benutzer ihre Richtigkeit überprüft, was viel einfacher ist, als selbst zu „fahren“.

Sprachassistent Fähigkeit


Fähigkeiten für Assistenten sind normalerweise Webdienste, die mit einem bestimmten Anforderungs- und Antwortprotokoll arbeiten. Wie bereits erwähnt, haben wir die Integration mit Alice als Ergänzung zur Hauptlösung gewählt. Weitere Informationen zum Protokoll für die Arbeit damit finden Sie in der Dokumentation sowie im neuesten Artikel zu Fähigkeiten . In unserem Fall basierte der Skill-Webdienst ebenfalls auf dem .net-Kern.

Der Benutzer sollte mit der Fähigkeit vertraut sein können, als würde er mit seinem engen Freund sprechen. Dazu ist es mindestens erforderlich, den Kontext der Konversation beizubehalten, zu verstehen, über welche Art von Objekt der Benutzer spricht, und auf das Thema zu antworten. Wenn der Benutzer vom Zweck des Dialogs abweicht, müssen Sie ihn auf die richtige Spur zurückführen können. Und das alles sollte nicht länger als 3 Sekunden dauern - so viel Zeit gibt Ihnen die Yandex.Dialog-Plattform, um zu antworten. Wenn die Antwort nicht innerhalb der vorgegebenen Zeit eingeht, wird der Dialog beendet und dem Benutzer wird mitgeteilt, dass die Fertigkeit nicht reagiert und er wahrscheinlich nicht mehr darauf zurückkommen möchte.

Sie können diese Aufgabe mithilfe verschiedener Dienste bewältigen, die einen Dialog mit dem Benutzer aufrechterhalten sollen. Wir haben bereits einige Erfahrungen mit Dialogflow gemacht.von Google, also wählte es. Zumindest gibt es für ihn eine Alternative aus Russland - Aimylogic von JustAI, aber ich musste noch nicht damit arbeiten.

In unserem Fall wird ein ziemlich einfacher Dialog angenommen: Der Benutzer bittet ihn, ihm ein Ticket zu senden, und wenn er seinen Namen sofort benannt hat, senden wir ihn. Wenn nicht, geben wir den vollständigen Namen an und senden dann bereits.

Verfeinern Sie einen Benutzernamen um jeden Preis

Klärung des Benutzernamens um jeden Preis

Unserer Meinung nach ist es bei dieser Aufgabe am schwierigsten, den Namen des Benutzers zu ermitteln. Wenn sie nicht benannt sind, müssen Sie sie irgendwie vom Benutzer abrufen und erst dann die gewünschte Aktion ausführen. Glücklicherweise können Sie dies mit DF (Dialogflow) sofort tun.
Dazu müssen Sie in der Absicht (Absicht), in der der Name empfangen werden soll, Trainingsphrasen hinzufügen, die den vollständigen Namen enthalten, und diese markieren, damit diese Informationen in den entsprechenden Absichtsparameter fallen. Wenn der Name erkannt wird, enthält der Parameter diesen Wert.

Markierte Trainingsphrasen

Markierte Trainingsphrasen

Absichtsparameter

Parameter der Absicht

Andernfalls müssen Sie diese Parameter um jeden Preis erhalten. Markieren Sie dazu den Parameter mit dem vollständigen Namen als obligatorisch (ein Häkchen in der Spalte „Erforderlich“) und geben Sie klarstellende Ausdrücke dafür an („Eingabeaufforderungen“). Falls erforderlich, gibt DF sie jetzt als Antwort zurück. Und wenn der Name erkannt wird - dann die üblichen Antworten für diese Absicht sowie die Aktion ("Aktion").

Sätze klären

Sätze klären

Allgemeine Antworten

Übliche Antworten

Dann ist alles einfach: Wenn der Aktionsname empfangen wird und die DF-Antwort alle erforderlichen Parameter enthält, führen wir diese Aktion aus und geben die Antwort an den Benutzer weiter. Wenn nicht, senden Sie den Klarstellungstext.

Um Tickets zu senden, muss der Skill eine Anfrage an das Backend unseres Portals mit der Autorisierungsüberschrift und dem Namen des Benutzers im Körper erfüllen. Das Unternehmen wird durch den Titel bestimmt, und anhand des Namens ist es einfach, den richtigen Benutzer zu finden. Im Leben kann der Titel durch Autorisieren der Fertigkeit erhalten werden, aber beim Hackathon haben wir ihn nur "hartcodiert", um Zeit zu sparen. Mit einem vollen Namen ist das etwas komplizierter.

Sie können die in DF erkannten Namen verwenden, aber es gibt ein kleines Problem: Wenn sich der Benutzer nicht im Nominativ aufruft, wird dieser Parameter auch in den Parameter geschrieben. Im Backend werden Benutzernamen in normaler Form geschrieben (im Nominativ), und eine Rechtschreibfehlanpassung erschwert das Auffinden.

Und hier haben wir festgestellt, dass in der Anfrage von Alice anerkannte Namen kommen, normalisiert und in separaten Feldern aufgezeichnet!

Anerkannter Name

Anerkannter Name

Leider kommt die NLU von Yandex-Dialogen mit komplexeren Namen, zum Beispiel Mamedov Polad Murtuza oglu, nicht sehr gut zurecht, aber diese Option eignet sich auch zur Demonstration beim Hackathon.

Als Ergebnis haben wir eine solche Kette:

Abfragediagramm

Abfragediagramm

Am Ende des Hackathons hatten wir alle drei Teile unserer Lösung bereit, die wir den Mentoren zeigten. Durch ihre Reaktion war es schwierig zu sagen, ob sie unsere Entwicklung mochten oder nicht, aber wie wir später aus einem persönlichen Gespräch erfuhren, hatte eine Demonstration der Integration mit Alice definitiv den erwarteten Wow-Effekt.

Während der Arbeit fand auch eine technische Kommission statt: Jedes Team musste Zugriff auf seine Repositories gewähren und mindestens einmal pro Stunde „Commits“ in ihnen durchführen. Manchmal kamen auch Vertreter der Kommission zu uns und diskutierten die zu entwickelnde Lösung. By the way, können Sie ihren Eindruck von der hackathon erfahren hier .

Gewinner


Nach den Reden der eingeladenen Redner begannen die letzten Plätze der Teams, die in der einen oder anderen Aufgabe gewonnen hatten. Das AeroTeam-Team hat die Aeroexpress-Strecke gewonnen. Wie uns die Mentoren später sagten (sie sind auch die Jury), war es dieses Team, das das durchdachteste Konzept für die Weiterentwicklung der Lösung hatte, und die Jungs berücksichtigten und arbeiteten an einigen Punkten, über die selbst die Kunden nicht nachdachten (leider haben sie nicht erwähnt, welche). Für den Sieg fehlten uns einige Details, die für Mentoren aus geschäftlicher Sicht wirklich interessant sind. Sie wählten eine Lösung, die ausreichend entwickelt war, um „sofort“ mit ihrer Entwicklung zu beginnen, was bedeutet, dass sie bei ihrer Entscheidung sehr objektiv waren, und das ist großartig.

Wie wir später aus einem Gespräch mit den Teilnehmern von AeroTeam erfahren haben, versammelten sie sich in einem chaotischen Team: Sie lernten den Hackathon aus ganz anderen Quellen kennen, kamen irgendwie in den allgemeinen Chat der Veranstaltung und vereinigten sich dort. Es waren drei Leute bei AeroTeam. Irgendwann wurde ihnen auch ein UX-Designer angeboten, aber sie lehnten ab und kamen ohne diese Rolle ganz gut aus. Die Jungs hatten keine besonderen Voraussetzungen für den Sieg (zum Beispiel in Form einiger Entwicklungen), und sie haben es geschafft, einen so starken Job zu machen, der meiner Meinung nach einen Sieg verdient hat.

Unser anderes Team ist leider auch nicht mit einem Pitch auf die Bühne gegangen, was bedeutet - hat auf unserer Strecke nicht gewonnen, aber wir werden diese Geschichte ein anderes Mal erzählen. Wer wurde in der Zwischenzeit der Supersieger des Hackathons? Diese Nominierung wurde an das Team vergeben, das laut Jury die beste Entscheidung unter allen Gewinnern der einen oder anderen Kategorie getroffen hat - Golden PSG. Sie arbeiteten an einer Aufgabe von der Panorama 360- Aussichtsplattform aus .. Bei der Zuweisung wurde davon ausgegangen, dass Besucher der Website vor einem „Chromakey“ (Leinwand) fotografiert werden, stattdessen einen anderen farbigen Hintergrund auswählen und das Foto sofort drucken. Die Jungs gingen noch weiter und ihre Lösung ermöglicht es Ihnen, jeden Hintergrund (und programmatisch ist es viel schwieriger als dieselbe Farbe zu entfernen) um das Hauptobjekt (die Person) zu entfernen und durch ein anderes zu ersetzen. Diese Entscheidung ist unserer Meinung nach auch siegreich.

Die Teilnehmer selbst sind Studenten der Budgetabteilung von ITMO. Wie die Jungs in einem persönlichen Gespräch sagten, waren sie immer auf der Baustelle, nachts gingen sie nirgendwo hin und "pflügten" fast 26 von 30 Stunden (natürlich zeitweise). Sie hatten bereits Erfahrung mit der Teilnahme an Hackathons, aber der Preis wird zum ersten Mal vergeben.

Ergebnisse


Zuallererst lohnt es sich, mehr Zeit für die Umsetzung der Hauptentscheidung aufzuwenden, damit die Jury sie „anfassen“ und live auf dem Prototyp sehen kann und nicht auf Modellen und Worten. Es lohnt sich auch, weitere Perspektiven für die Entwicklung des Projekts in Betracht zu ziehen. Wenn andere Dinge gleich sind, können Richter einer Entscheidung den Vorzug geben, die nicht nur die aktuelle Aufgabe, sondern auch die damit verbundenen Ziele des Kunden erfüllt.

Wenn Sie sich jedoch irgendwie von anderen abheben können - um ein schönes Design zu erstellen oder eine ungewöhnliche Idee umzusetzen -, ist dies definitiv eine Verwendung wert. Nach der Erfahrung bei der Teilnahme an anderen Wettbewerben kann dies dazu beitragen, wenn nicht in der Hauptsache, dann zumindest in der zusätzlichen Nominierung zu gewinnen - zum Beispiel, um gegebenenfalls einen „Zuschauerpreis“ zu erhalten. Oder die Teilnehmer und Richter werden einfach für ihren ungewöhnlichen Ansatz in Erinnerung bleiben.

Vor der Veranstaltung lohnt es sich, das Geschäft des Kunden zu untersuchen, um seinen „Schmerz“ besser zu kennen und etwas zu finden, um ihn zu beseitigen. Ideen und kleine Entwicklungen sind keine „vorgefertigte Lösung“, damit die Regeln des Hackathons nicht verletzt werden und mehr Zeit im Wettbewerb bleibt.

Sie sollten sich nicht auf die Bereitstellung von Ressourcen durch den Kunden verlassen, auch wenn dies in der Aufgabe vorgeschrieben ist. Im Allgemeinen sollte man immer gut auf einen Hackathon vorbereitet sein: die erforderliche Mindestinfrastruktur erhöhen, ein Projekt veröffentlichen, die API der erforderlichen Dienste untersuchen und dergleichen. Es lohnt sich auf jeden Fall, eine Lösung für ein Problem wie Ihren eigenen Zugang zum Internet in Betracht zu ziehen, da die meisten dieser Ereignisse Schwierigkeiten damit haben. Hier bestand zum Beispiel die meiste Zeit keine stabile Verbindung. Die Ironie ist, dass das Symbol des Hackathons ein Offline-Dinosaurier war, der in Chrome zu sehen ist, wenn Sie nicht über das Internet verfügen.

Ich möchte die Organisation des Hackathons separat erwähnen: Im Allgemeinen war es von seiner besten Seite. Jede Etappe fand pünktlich statt, auf der Baustelle selbst war auch alles in Ordnung: Es gab genug Essen für alle, es gab viele Snacks. Am zweiten Tag war es theoretisch möglich, nach der vorläufigen Registrierung zum öffentlichen Teil zu kommen, aber infolgedessen konnte jeder dorthin gelangen. Eine kleine Party mit einer Musikgruppe und einem Buffettisch war auch ein Erfolg! Wir bedanken uns bei den Organisatoren. Unsere Bewertung - vier von fünf grünen Dinosauriern - also gab es etwas zu streben!

Das war der Moskauer Reisehack für uns: Etwas in unserer Lösung war schlecht und etwas war gut. In jedem Fall werden wir unsere Fehler berücksichtigen und uns beim nächsten Wettbewerb daran erinnern. Im Allgemeinen ist die Teilnahme an einem Hackathon, insbesondere in einem Team von Kollegen, großartig! Für uns war es nicht nur eine goldene Erfahrung, sondern auch die beste Teambildung. Wir haben sehr cool gespielt, verrückte Dinge ohne Schlaf und Ruhe gemacht. Wir waren überzeugt, dass wir in kurzer Zeit und in einer stressigen Situation produktiv an komplexen Aufgaben arbeiten können. Die Hauptsache ist, den Prozess zu genießen!

Wenn Sie an den technischen Details der Implementierung unserer Lösung interessiert sind - schreiben Sie in die Kommentare, wir werden es Ihnen gerne mitteilen.
Verabschieden Sie sich nicht, wir sehen uns am Hub
Team 73 Team, Aero Club IT

Aeroclub IT-Teams bei Moskau Travel Hack

All Articles