参与者眼中的莫斯科旅行黑客

莫斯科的Aeroclub IT团队旅行黑客

你好!您可能听说过俄罗斯第一次以旅游业数字化为主题的黑客马拉松AeroClub IT公司一次由两个团队代表,我们不仅度过了一段美好的时光,而且还设法开发了原型项目,尝试以一种不寻常的工作方式进行工作,并与其他参与者进行交流。在削减-我们的团队之一的故事!

在申请时,有必要从10个拟议任务(路径)中选择一个。这些就是MegaFon,Facebook,PANORAMA 360,MTS Startup Hub,Aeroexpress,Pushkin Museum,Tsaritsyno Park,Discover Moscow,Discovery City和Russpass等知名公司的案例。

我们立即申请了两个团队的参与:“ Aeroexpress”曲目中的 73团队“ Tsaritsyno”中的 “ New Horizo​​ns 。选择第一个是因为它靠近我们公司的业务领域(B2B软件解决方案),并且在胜利的情况下,我们可以继续合作与发展。第二个-想摆脱日常工作并尝试新事物的人。

在活动的一般聊天中,他们说已提交了1241个应用程序(团队和个人),并且,正如您可能已经猜到的那样,我们通过了选择!还有我们两个团队!
剩下的唯一一件事就是参加黑客马拉松。

黑客马拉松


网站上的一切都照常进行:注册,小吃区,带团队编号的桌子。
在9:30举行了短暂的开幕式:组织者的几句话,黑客马拉松的庄严开始,工作开始了。接下来,我们将代表承接Aeroexpress任务的73团队的参与者发言。

首先,我们与导师进行了交谈:我们了解了他们希望在决策中看到的内容,哪些细微差别以及应该优先考虑的内容。事实证明未提供所承诺的资源时,团队感到有些惊讶。根据任务的描述,我们可以获得项目的Aeroexpress API,托管,域名和证书。正如指导者所解释的,出于安全原因,该API无法提供,但他们并未真正解释其余部分。幸运的是,我们有一个“备份选项”-个人托管。结果,他保存了我们的位置。

决断


需要解决的主要问题是Aeroexpress法律实体的机票销售自动化。人。我们对当前的过程进行了一些研究,但要说得有点震惊。正如我们从法人实体公开报价中了解到的那样,首先,客户公司会发送一封接​​受信,以要求提供所需票数,并注明公司的详细信息。接下来-支付发票,最重要的是,以某种方式使用密码保护的存档形式接收票证。如您所知,这是最低级别的自动化。

我们绘制了CJM(客户旅程图)的草图,选择了必要的最小功能,然后考虑了设计。在某种程度上,我们的推理如下:每个团队以一种或另一种方式将显示大致相同的解决方案:注册法人实体。人员,购票,开票等。为了以某种方式脱颖而出,您必须提出一些特别的建议。至少,您需要一个好的设计,然后在一般背景下,我们的解决方案会更加引人注目。幸运的是,我们其他团队中有一位设计师,她将为我们提供帮助。但是您还需要其他东西,这对B2B来说是完全不寻常的。然后,我们决定增加与Yandex语音助手Alice的集成。

原因有几个:主要的原因-我们有一些经验与她合作,快速制作出或多或少有用的原型。通常,另一种-B2B与无聊和正式的事物相关联,并且通过谈话专栏获取门票是新事物。另外,我们有两个后端开发人员,并且在同一个项目中集成在一起不是很方便,同时我们将同时实现主要功能和附加功能。
我将从主要解决方案开始-Aeroexpress批发门户。根据我们的想法,它由两部分组成:前端,当然还有后端。

前端


我们的前端是Angular的拥护者,因此可以选择此特定框架。有角度的“开箱即用”提供了一个良好的入门环境,您无需在其中进行配置,路由和连接到后端,这是黑客马拉松所需要的。此外,我们的开发人员已经与他合作了很长时间,并积累了他的一些库,您可以在其中节省一些时间来参加黑客马拉松。

结果,我们得到了这样的前端:


我们试图使外观现代,时尚,并保持Aeroexpress的色彩。

在这里,我们实现了以下功能:

  1. 按TIN搜索公司名称
  2. 公司和联系人的注册,其中标明了每月大约的门票销售量。
  3. 公司员工授权
  4. 机票订购
  5. 即将旅行的次数
  6. 订单历史
  7. Aeroexpress经理的个人帐户

我们试图使公司在门户网站上的注册尽可能简单:其代表只需要知道法律的TIN。人员,然后在相应的字段中输入。如果显示的名称合适,则可以继续。同时在门户网站上注册是与Aeroexpress合作的一种应用程序。导师建议,如果代表能表明每月门票销售的大致数量,他们将更容易考虑此类申请,为此,我们增加了一个适当的字段。

乍一看,似乎还没有做很多事情,但是我们的解决方案具有非常漂亮且精心设计的设计。它是从头开始制作的,没有使用任何现成的模板。根据以前的经验,黑客马拉松通常会赢得一些决策,这些决策的制定不那么出色,而是“包装在精美的包装中”,而这次我们决定依靠美观的外观。展望未来,我要说的是导师们对我们的设计感到满意,但是根据实现的功能数量和应用该解决方案的未来前景(某些团队对此进行了深思熟虑)准确地判断了解决方案。

后端


我们的两个后开发人员都是经验丰富的敏锐专家(他们使用C#编写),因此,后开发人员也基于.net核心。之所以选择2.1版,是因为它上的应用程序肯定会在备份主机上运行,​​并且尝试进行黑客马拉松是很危险的-您可能会浪费时间,而没有解决方案。我们获得了带有二十一点和DI的常规网络API。
在这里,我们已经完成了“前台”所需的一切:

  1. 通过TIN搜索公司信息
  2. 公司及其联系人的注册
  3. 密码认证
  4. 承载令牌授权
  5. 获取用户信息
  6. 获取当前用户的公司员工列表
  7. 创建订单
  8. 创建订单后通过邮寄发送票证
  9. 通过邮件发送票证到请求的用户(用于外部集成)
  10. 获取有关所有公司机票的信息
  11. 上市订单
  12. 上市注册公司

从有趣的集成到TIN或BIN在Dadata中寻找组织的集成,可轻松注册法人。面孔。简而言之,后端接收到具有给定TIN的“查找公司”请求,并将此信息发送到服务API。作为回应,如果找到了公司,我们将获得有关它的信息:简称(我们在答案中给出)以及详细信息。将获得的数据保存在某处非常有用,因为它们将有助于形成帐户:用户检查其正确性就足够了,这比自己“驱入”要容易得多。

语音助手技能


助手技能通常是可以使用特定请求和响应协议的Web服务。如前所述,我们选择与Alice集成作为主要解决方案的补充。您可以从文档以及有关技能的最新文章中了解有关使用该协议的协议的更多信息。在我们的案例中,技能Web服务也基于.net核心。

用户应该很轻松地与技能进行交互,就好像他正在和他的密友聊天一样。为此,至少必须保持对话的上下文,了解用户正在谈论的对象以及就该主题进行回答。如果用户偏离了对话的目的,则需要能够将其返回到正确的轨道。所有这一切都应该发生在不超过3秒的时间上,这就是Yandex.Dialog平台为您提供回答的时间。如果在指定的时间内未收到答案,对话将结束,并且将告知用户该技能没有响应,并且他们不太可能希望再次返回。

您可以借助旨在与用户保持对话的各种服务来完成此任务。我们已经对Dialogflow有一定的经验来自Google,因此选择了它。至少,对于他来说,还有俄罗斯的另一种选择-JustAI的Aimylogic,但我还没有使用它。

在我们的案例中,假设对话非常简单:用户要求向他发送票证,如果他立即命名了他的名字,我们将向其发送。如果没有,我们指定全名,然后我们已经发送了。

不惜一切代价完善用户名

不惜任何代价澄清用户名

我们认为,此任务中最困难的事情是获取用户名。如果未命名,则需要以某种方式从用户那里获取它们,然后才执行所需的操作。幸运的是,DF(Dialogflow)允许您立即执行此操作。
为此,在应该接收名称的意图(Intent)中,您需要添加包含全名的训练短语并对其进行标记,以使该信息属于相应的intent参数。如果识别出该名称,则参数将包含该值。

标记训练短语

标记训练短语

目的参数

意向参数

否则,您需要不惜一切代价获取这些参数。为此,将带有全名的参数标记为必填项(“必填”列中的对号),并为其指定明确的短语(“提示”)。现在,如有必要,DF将回馈他们。并且,如果识别出该名称,则通常会针对此意图以及操作(“操作”)进行回答。

澄清短语

澄清短语

常见答案

常用答案

然后,一切都很简单:如果收到动作名称,并且DF响应具有所有必要的参数,我们将执行此动作并将响应传递给用户。如果不是,请发送说明文字。

要发送票证,该技能必须使用授权标题和正文中的用户名来满足对我们门户网站后端的请求。公司将由标题和名称决定,很容易找到合适的用户。在生活中,可以通过授权该技能来获得标题,但是在黑客马拉松上,我们只是对其进行了“硬编码”以节省时间。全名稍微复杂一点。

您可以使用DF中识别的名称,但是存在一个小问题:如果用户在指定情况下不称呼自己,那么此参数也将写入该参数中。在后端,用户名以普通形式(在主格情况下)书写,并且拼写不匹配将使查找变得困难。

在这里,我们注意到,在Alice的请求中出现了公认的名称,这些名称已标准化并记录在单独的字段中!

公认的名字

公认的名称

不幸的是,Yandex-dialogs的NLU不能很好地应对更复杂的名称,例如Mamedov Polad Murtuza oglu,但是此选项也适合在黑客马拉松上演示。

结果,我们得到了这样一条链:

查询图

查询图

在黑客马拉松结束时,我们已经准备好了解决方案的所有三个部分,并已将其显示给指导者。通过他们的反应,很难说他们是否喜欢我们的发展,但是,正如我们后来从一次个人谈话中了解到的那样,与爱丽丝融合的示范肯定具有预期的效果。

在工作期间还成立了一个技术委员会:每个团队必须提供对其存储库的访问权限,并每小时至少一次在其中进行“提交”。另外,有时委员会的代表来找我们,讨论正在开发的解决方案。顺便说一句,你可以找到自己的编程马拉松的印象在这里

优胜者


在受邀演讲者发表演讲之后,赢得一项或多项任务的团队的最后比赛开始了。 AeroTeam团队赢得了Aeroexpress赛道。正如导师后来告诉我们的那样(他们也是陪审团),正是这个团队对解决方案的进一步开发有了最深思熟虑的概念,他们考虑了并在某些方面进行了工作,甚至客户自己也没有考虑过(不幸的是,他们没有提到哪一个)。为了获得胜利,从业务的角度来看,我们缺少一些对于导师真正有趣的细节。他们选择了一种经过充分开发的解决方案,可以“立即”开始开发,这意味着他们的决策非常客观,这很棒。

后来我们从与AeroTeam参与者的对话中了解到,他们聚集在一个凌乱的团队中:他们从完全不同的来源了解到黑客马拉松,不知何故进入了活动的一般聊天,然后他们团结了起来。 AeroTeam有3个人。在某些时候,他们也被提供给UX设计师,但是他们拒绝了,没有这个角色,他们做得很好。这些家伙没有获得胜利的任何特殊先决条件(例如,以一些基础工作的形式),他们设法做得如此有力,我认为应该获得胜利。

不幸的是,我们的另一支队伍也没有上场比赛,这意味着她没有在赛道上获胜,但是我们将在另一个时候讲述这个故事。同时,谁成为骇客马拉松的超级赢家?评审团被提名给该团队,根据评审团的意见,该团队在一个类别或另一个类别的所有获奖者-Golden PSG中做出了最佳决定。他们在Panorama 360观景台上完成了一项任务分配后,假定将使用“抠像”(普通画布)为该网站的访客拍照,而是选择其他彩色背景,然后立即打印该照片。伙计们走得更远,他们的解决方案使您可以删除主要对象(人)周围的所有背景(并且以编程方式比删除相同的颜色要困难得多),然后将其替换为另一个。我们认为,这一决定也值得胜利。

参与者本身是ITMO预算部门的学生。正如他们在一次私人谈话中所说,他们一直在现场,晚上他们什么都没去,并且在30个小时中(不时断断续续地)“耕种”了将近26个小时。他们已经有参加黑客马拉松的经验,但是这是第一次获得奖金。

发现


首先,值得花更多的时间来执行主要决定,以便陪审团可以“触摸”它,将它看在原型上,而不是在模型和文字上。同样值得考虑的是该项目发展的进一步前景。在其他条件相同的情况下,法官可能会优先考虑不仅能够满足当前任务而且还能够满足客户的既定目标的决策。

但是,如果您能以某种方式脱颖而出-做出漂亮的设计或实施不寻常的想法,那么绝对值得使用。从参加其他比赛的经验来看,这可以帮助赢得比赛(如果不是主要比赛),至少可以赢得额外提名-例如,获得“观众奖”。否则,参与者和法官将因其非同寻常的方式而被记住。

在活动开始之前,有必要对客户的业务进行一些研究,以便更好地了解其“痛苦”并提出消除该业务的措施。想法和小发展不是“现成的解决方案”,因此不会违反黑客马拉松的规则,比赛本身会有更多时间。

即使任务中有规定,也不应依靠客户提供资源。通常,应该总是为黑客马拉松做好充分的准备:提高最低限度的必要基础设施,考虑发布项目,研究必要服务的API等。绝对值得考虑解决诸如您自己访问Internet之类的问题的解决方案,因为这些事件大多数都与此有关。例如,在这里,大多数时候没有稳定的连接。具有讽刺意味的是,黑客马拉松的象征是离线的恐龙,当您没有互联网时,可以在Chrome中看到它。

我想分别指出黑客马拉松的组织方式:总的来说,这是最好的。每个阶段都按时进行,现场本身也井井有条:每个人都有足够的食物,还有很多小吃。从理论上讲,第二天可以在初步注册后进入公众场合,但是结果任何人都可以到达那里。一个有音乐团体的小型聚会和自助餐桌也很成功!我们对组织者表示感谢和尊重。我们的评级-五分之四的绿色恐龙-因此我们需要努力!

那对我们来说是莫斯科旅行的黑客:我们解决方案中的某些东西是坏的,而某些东西是好的。无论如何,我们都会考虑到自己的错误,并在下次比赛中记住这些错误。总的来说,参加黑客马拉松,尤其是参加同事团队,真是太好了!对于我们来说,这不仅是一次黄金体验,而且是最好的团队建设。我们玩得很酷,做了疯狂的事,没有睡眠和休息。我们坚信,我们可以在短时间内和压力很大的情况下高效地完成复杂的任务。最主要的是享受过程!

如果您对我们解决方案实施的技术细节感兴趣-在评论中写下,我们将很乐意告诉您。
不要说再见,在集线器见
第73战队,航空俱乐部IT

莫斯科的Aeroclub IT团队旅行黑客

All Articles