Dois capitães de "Digital Breakthrough - 2020", ou Resolva um caso em algumas horas

imagem



Com você nos espaços abertos da Habr estão dois capitães das equipes de funcionários da Rosneft que participaram das finais da maratona de TI Digital Breakthrough 2020 e não podem ficar calados sobre isso.



A Rosneft não é indiferente aos eventos de TI. Ora, a própria empresa gera anualmente hackathons e desafios ( https://rn.digital/it2020 ) a fim de agitar a comunidade de TI para solucionar problemas urgentes para ela. No entanto, seus funcionários não estão autorizados a participar nas hackatonas-maratonas da Rosneft - isso não é ético em relação a participantes externos. Mas eles, desenvolvedores e programadores de software corporativo de alta tecnologia, querem se comparar à força heróica!



Portanto, a participação dos funcionários da Rosneft em vários hackathons é uma espécie de manutenção da equipe em estado de combate, uma fonte de inspiração e ideias, incentivando o desenvolvimento de abordagens não padronizadas para as tarefas de TI. O principal não é em detrimento da obra principal, mas isso já é óbvio. O líder petrolífero está focado na digitalização dos processos de negócios e na substituição da importação de tecnologias de informação no campo da produção de petróleo e gás, pelo que a presença de espírito competitivo entre os colaboradores da empresa e a vontade de competir com o resto do mundo são considerados bons.



Neste artigo, os funcionários da RN-BashNIPIneft, Chingiz Akhmetov e Maya Bikmetova, contarão em cores sobre o caminho de suas equipes até o final de um evento de TI legal, compartilharão ideias e hacks de vida.



Chingiz Akhmetov e a equipe "Inn BTG"



Vamos nos apresentar primeiro. “Inn BTG” é: “Inovadora. Brilhantemente. Tecnologicamente. Grandly ". Eles também são Vladimir Ryzhikov, Radmir Karimov e Murad Musin e Chingiz Akhmetov.



Há pouco mais de um ano, quando uma das etapas do hackathon Digital Breakthrough - 2019 aconteceu em nossa Ufa natal, formamos uma equipe para participar e nos envolvermos na resolução do problema. Nesse momento memorável, chegamos à final, que foi disputada em Kazan! Infelizmente nem toda a nossa equipe conseguiu comparecer ao evento. Portanto, em um modo de emergência, os remanescentes da equipe tiveram que formar uma nova "gangue" dos mesmos renegados de outras cidades (nossa Ufa foi acompanhada por Cherepovets e São Petersburgo). Na final, infelizmente, não conseguimos vencer ou mesmo nomear. Portanto, do hackathon do ano passado, temos apenas mercadorias na forma de lindas camisolas brilhantes com os símbolos da competição e uma gestalt descoberta para vencer a final ...



Nesse sentido, em 2020, duas semanas antes do início do hub Ural IT da maratona Digital Breakthrough - 2020, foi decidido criar uma nova equipe para uma vitória brilhante e incondicional, primeiro na regional, e depois na fase final da competição.



Como no ano passado, o backbone (3 caças) foi formado por colegas de um departamento de nosso instituto científico e de design, que agora estão desenvolvendo um pacote de software para modelagem geológica de campos de petróleo "RN-GEOSIM". Além disso, por uma questão de confiabilidade, a equipe foi reabastecida com um bancário, mas não por causa de empréstimos e hipotecas, mas por ser nosso amigo na bancada de um ex-aluno e conhecer o negócio. Assim, foi possível recolher um “quatro fantásticos”, onde cada participante tinha experiência em determinadas áreas da programação, era de alguma forma um especialista.



imagem

Captura de tela da transmissão durante o anúncio dos vencedores do caso.



Como participantes experientes, gostaríamos de observar um aumento no nível de organização do hackathon do que no passado. Este ano há mais tarefas e são mais diversificadas, por exemplo, surgiram tarefas não só para serviços web. Desta vez, o hackathon está sendo realizado online, o que facilitou muito a vida dos participantes e possibilitou economia com transporte. Notícias importantes, entrevistas com pessoas interessantes, vários concursos e questionários são transmitidos no canal do YouTube. As informações para os participantes são postadas nos canais do Telegram. No chat principal do Telegram da competição, há comunicação com suporte para dúvidas gerais, as respostas vêm imediatamente. Também existe um canal para encontrar membros e equipes. O Discord foi escolhido para comunicação dentro da equipe (também foi usado para comunicação com os especialistas de caso nos pontos de verificação). Em uma palavra, tudo é para pessoas!



Separadamente, queremos colocar um “plus” para o fato de que agora não existe um vínculo rígido para a região: nossa equipe é de Ufa, mas estávamos ocupados em um momento e não podíamos participar do Polo do Volga, mas conseguimos competir nos Urais. Fiquei satisfeito porque as gravações de todas as transmissões e proteções de streaming foram postadas no canal do YouTube. Transparente e informativo.



Nossa equipe optou por participar da solução do case “Ciclovia” do Departamento de Informatização da Região de Tyumen: “Desenvolvimento de software que permite analisar a colocação inicial de travessias de pedestres, ciclovias e o caminhar e andar de bicicleta reais dos moradores da cidade”. Não que sejamos grandes fãs. Esta tarefa foi escolhida porque foi descrita em detalhes na entrevista do titular do caso ( https://www.youtube.com/watch?v=hLPGCZ-5HRc ), e o objetivo principal era obter alguma técnica, algoritmo. Este é exatamente o nosso tópico.



imagem

As equipes priorizaram os casos antes do início. A relação final do número de equipes por casos no Pólo Ural tornou-se visível após o início.



Entendemos que é muito importante escolher as ferramentas que ajudarão a tornar o MVP (Minimum Viable Product, ou em nossa opinião “um produto com funções mínimas, mas suficiente para satisfazer os primeiros consumidores”) da maneira mais rápida. Para nós, são Python com suas bibliotecas NetworkX (para trabalhar com gráficos) e OSMnx (para representar dados do OpenStreetMap como um gráfico). O desempenho de tal solução deixa muito a desejar, uma vez que o próprio Python é lento e o NetworkX não tinha algoritmos especializados para trabalhar com gráficos de estradas. Em nosso protótipo, o tempo de operação para agrupamentos relativamente pequenos chegou a dezenas de minutos. É claro que esse momento é inaceitável para o usuário, mas mostramos que a ideia está funcionando. A seguir, consideramosé melhor reescrever o kernel computacional em uma linguagem compilada usando algoritmos especializados com paralelização.



A breve essência de nosso algoritmo é que a cidade inteira (o esquema do algoritmo, à esquerda, topo) é agrupada em seções. Em cada seção, o grau de demanda por ciclovias é determinado (esquema do algoritmo, direita, topo). O gráfico rodoviário é filtrado, deixando apenas as estradas onde as ciclovias podem ser construídas. Em seguida, o gráfico filtrado é comparado com o cluster, e apenas as estradas que se enquadram nas seções exigidas do cluster são restantes (o algoritmo funciona, à esquerda, embaixo). As ilhas resultantes são conectadas pelo algoritmo dos caminhos mais curtos para que o sistema de ciclovias seja conectado, ou seja, o ciclista pode se deslocar de uma área para outra (esquema do algoritmo, à direita, embaixo).



imagem

O esquema do algoritmo.



Fomos divididos em subtarefas: uma fez a parte do cálculo, a segunda abriu o servidor, a terceira fez a visualização na página web, a quarta fez a visualização do desktop. Conseguimos realizar quase tudo. Decidimos transferir o gráfico resultante para o cliente inteiramente e desenhar por meio do OpenLayers, embora provavelmente seja melhor implantar nosso próprio servidor de blocos.



imagem

Esquemático projetado por MVP (subótimo).



Resultados finais



Na final da competição Digital Breakthrough, recebemos um case do Ministério da Energia “Desenvolvimento de um sistema para modelar a dependência do consumo de eletricidade e indicadores econômicos da Federação Russa por territórios e indústrias”. Em comparação com a fase regional, a final foi mais ambiciosa: o número de processos aumentou (15 contra 9), o número de equipas num processo (26 contra 10). O fundo de prêmios para os vencedores também cresceu, os números exatos podem ser vistos no site https://leadersofdigital.ru .



No decorrer do trabalho na tarefa e seguindo os resultados das consultas com os titulares de casos, decidimos implementar o projeto em um Notebook Jupyter em Python, e usar econometria para modelagem. A variável dependente do modelo foi o volume real de consumo de energia, a variável independente foi o volume de mineração e manufatura. A previsão da variável dependente foi realizada de acordo com o seguinte algoritmo:



1. A produção industrial é projetada (uma tendência linear é construída):

a. A seção do gráfico é destacada, que é usada para calcular os coeficientes de tendência.

b. Os coeficientes de tendência linear são determinados pelo método dos mínimos quadrados.

2. Constrói-se um modelo da dependência da tendência do consumo de eletricidade com o volume de produção industrial



imagem



3. O volume de consumo de energia é previsto usando o modelo construído e modelagem pelo método SARIMA (o artigo https://habr.com/ru/company/ods/blog/327242/ nos ajudou muito. )



imagem

Resultados de previsão restantes.



Infelizmente, a abordagem escolhida ficou um pouco aquém das três primeiras e ficamos em 22º lugar. Participaremos de hackathons semelhantes no futuro? Claro! Resolver tarefas não relacionadas ao trabalho permite que você veja as tarefas de trabalho com um novo olhar mais tarde.



Maya Bikmetova e "NEII"



Algumas semanas antes do Digital Breakthrough 2020, participei de outro hackathon menor e minha equipe ficou em primeiro lugar. Provavelmente, isso influenciou a decisão de tentar sua sorte na competição totalmente russa.



Convidei meus colegas e amigos Marina Semyonova, Guzel e Nail Akmurzin para se juntarem à equipe, pois é muito mais fácil trabalhar na pressão de tempo com amigos que conheço. Isso não perde tempo e todas as 30-36 horas do hackathon podem ser dedicadas ao desenvolvimento e à criação de um MVP. Entramos no Volga IT Hub of Digital Breakthrough - 2020 como a equipe NEII. Este nome está conosco há muito tempo. Acreditamos que ele reflete melhor a nossa essência: funcionários de um instituto de pesquisa que se dedica ao desenvolvimento de sistemas baseados em inteligência artificial (IA).



Como meus colegas (e são concorrentes) já escreveram acima, devido à complexa situação epidemiológica, o hackathon foi realizado online. Tivemos três pontos de verificação em que conversamos com o moderador, o especialista técnico e o representante do responsável pelo caso. Eles ouviram nossas idéias, deram conselhos, observaram o que fizemos e avaliaram nossa apresentação.



Todas as equipes receberam uma lista de 10 casos. Ao se cadastrar, priorizamos. E um dos casos mais prioritários para a equipe era ir até ela no hackathon. Além disso, cada caso continha uma descrição geral do problema, e uma detalhada foi fornecida apenas no início da competição. Tivemos um caso em que foi necessário desenvolver um sistema inteligente para automatizar informações e proporcionar benefícios sociais à população. O cliente deste caso foi o Ministério da Política Social, Demográfica e Familiar da Região de Samara.



imagem

O esquema geral da solução desenvolvida.



Também conversamos no Discord para discutir tarefas. Juntos, eles apresentaram ideias para soluções, distribuídas quem faria o quê. Marina foi responsável pela lógica do servidor - backend e banco de dados, Guzel - pela apresentação, e Nail pelo frontend. Assumi o desenvolvimento de um modelo de aprendizado de máquina, gestão da equipe e comunicação com o case titular.



Como resultado do trabalho na tarefa, implementamos protótipos de dois sistemas.



1. Um aplicativo da web na forma de um chat bot para informar a população sobre os benefícios.



Na parte do cliente, o cidadão descreve sua situação de vida. A solicitação resultante é enviada ao serviço NLP, que é responsável pelo processamento da linguagem natural. Nos bastidores, a categoria da solicitação do usuário é determinada usando métodos de aprendizado de máquina. Em outras palavras, o problema da classificação do texto está sendo resolvido. A previsão de PNL do modelo é enviada para o banco de dados. As informações necessárias sobre os benefícios esperados são retornadas do banco de dados por meio da chave e fornecidas novamente ao cliente.



imagem

O script de back-end principal acessa o serviço NLP e o banco de dados.



Na caixa de diálogo, o usuário vê a quais benefícios tem direito, quais documentos precisam ser coletados.



imagem

Captura de tela de um protótipo de chatbot para informar a população sobre os benefícios.



2. Serviço de fiscalização da atualização dos atos normativos e legislativos.



Durante a comunicação com um representante do titular do caso, descobriu-se que a grande dor dos trabalhadores da proteção social é a necessidade de revisar regularmente muitos documentos regulamentares a fim de identificar rapidamente as alterações na legislação. Se houver alterações, o funcionário atualiza o banco de dados local. Naturalmente, isso exige muito tempo e esforço, e os funcionários têm menos tempo para trabalhar diretamente com as pessoas. Estamos convencidos de que essa rotina de trabalho pode e deve ser automatizada.



Como primeira aproximação para a resolução deste problema, propomos um serviço que compara regularmente documentos da base de dados da segurança social local com os mesmos documentos da base de dados de algum serviço online, por exemplo, "Consultor Plus". Se detectar diferenças nos documentos, o serviço envia uma notificação ao trabalhador da previdência como “Houve alteração no documento X. Atualize seu banco de dados local. " Assim, o agente da previdência social fica livre da necessidade de retirar um monte de documentos. A máquina detectará mudanças nas leis para ele / ela enquanto ele / ela trabalha com os cidadãos.



Se falamos do lado técnico da questão, como base para a solução do problema de comparação de textos, utilizamos a abordagem clássica frequentemente utilizada na Recuperação de Informação - representar documentos na forma de vetores numéricos com posterior estimativa da distância cosseno entre eles.



imagem

Fórmula para calcular a distância cosseno entre vetores de dois documentos.



E agora alguns hacks de sobrevivência hackathon. Recomendamos aprovar desde o início a lista e as versões das bibliotecas com as quais trabalhar. Isso evitará situações em que o projeto não está sendo construído devido a conflitos de versão e você precisa enviar seu código para revisão em 10 minutos. Aliás, é melhor postar links para a apresentação e a solução meia hora antes do final da competição, e não deixar para o último momento. No hackathon, as pessoas estavam muito nervosas com um site que travou cinco minutos antes da entrega final de todo o projeto ...



imagem

Tecnologias usadas: viva o código aberto! O principal é manter o controle das versões do framework.



Por um lado, um hackathon é uma competição de especialistas técnicos, e o júri avalia o código: legibilidade, operabilidade, arquitetura da solução, documentação. Por outro lado, existe um case titular e seus representantes estão longe do mundo da informática. Eles, em primeiro lugar, apreciam a beleza, consistência e clareza da apresentação e do design da interface. Ou seja, é melhor ter na equipe uma pessoa que se ocupe apenas da apresentação, aquela que, com a sua ajuda, "venda" a solução ao titular do caso.



Resultados finais



Infelizmente, não houve tempo para se preparar para a final do Digital Breakthrough - 2020. No final do ano, tradicionalmente há mais trabalho. Portanto, confiamos na sorte e uns nos outros!

Na final do hackathon, estávamos no mesmo time. Desta vez, encontramos um caso do Sberbank: a tarefa é criar uma solução que ajude a agilizar o trabalho com correio. Acabou sendo um grande problema, pois os executivos seniores precisam classificar 2.000 e-mails por dia, o que leva pelo menos 3 horas!



No primeiro ponto de verificação, fomos informados de que os desenvolvedores do Sberbank estão intrigados com esse problema há muito tempo, mas ainda não encontraram uma solução concreta - eles precisavam de uma ideia que os ajudasse a finalmente chegar a algo.



E começamos a pensar. Em 2 horas, geramos muitas ideias interessantes diferentes (essa foi a parte mais criativa do hackathon, já que uma sugeria, a outra complementava, e essa ideia se transformou em uma ferramenta perfeita que substituiria o e-mail regular = D).



Como resultado, concebemos a implementação do nosso próprio cliente de correio "Sber-secretária", que transformaria a correspondência em chat, os chats seriam agrupados por assunto em pastas e o sistema determinaria automaticamente a importância da correspondência (chat). No chat, você pode ouvir mensagens não lidas, os textos das mensagens podem ser ditados, uma nova carta é criada com um comando de voz e, em vez de uma correspondência na janela principal, em vez de uma correspondência, de 1 a 4 pode ser exibida e mais alguns recursos adicionais.



imagem

Layout da interface do cliente de e-mail



Em seguida, atribuímos responsabilidades: Eu era o responsável pelo lado do servidor do projeto, Nail era o responsável pelo lado do cliente, Marina desenvolveu o design em figma e Guzel fez uma apresentação bonita e ampla e se preparou para a defesa.



Sabíamos de imediato que não teríamos tempo para fazer um aplicativo funcional, mas esperávamos que pelo menos a parte do cliente amadurecesse. Houve muito trabalho e, como resultado, mostramos na figma que funcionalidade nosso cliente de e-mail teria, descrevemos a arquitetura do projeto, nomeamos uma série de vantagens dessa solução, em comparação com o Outlook, o custo do projeto e as etapas de implementação.



Acho que podemos dizer que o júri gostou da nossa decisão, pois durante um dos checkpoints, os rastreadores mostraram que estamos caminhando na direção certa. Não conseguimos fazer uma candidatura funcional, mas entramos no top 5 (5º lugar) de 11 equipas. O que o 5º lugar significa para nós? Isso significa que temos a oportunidade de mostrar o melhor resultado da próxima vez!



Se você também participou do “Digital Breakthrough - 2020”, então escreva suas impressões e pensamentos nos comentários!



All Articles