Automação VS Caos

imagem

A evolução das tecnologias de TI permitiu controlar enormes fluxos de dados. Os negócios têm muitas soluções de TI: CRM, ERP, BPM, sistemas de contabilidade ou, pelo menos, apenas Excel e Word. As empresas também são diferentes. Algumas empresas são compostas por muitos ramos. Vamos citar como "Pirâmide". Pirâmides têm problema de sincronização de dados para a pilha de sistemas de TI. Os fornecedores e versões de software diferem significativamente nas ramificações. Além disso, a empresa de administração modifica continuamente os requisitos de relatório que causam ataques de frustração nas filiais. Esta é uma história sobre o projeto que encontrei com o caos que precisava ser sistematizado e automatizado. Orçamento baixo e prazos apertados limitavam o uso da maioria das soluções industriais existentes, mas abriam espaço para a criatividade.

Formato de uso geral


A empresa cliente definiu uma tarefa para coletar dados de relatórios de todas as filiais. Deixe-me explicar a escala do desafio - existem dezenas de sistemas, incluindo ambos: auto-criados e monstros como o SAP.

Um relatório pode conter dados de: contadores, técnicos de manutenção, gerentes de relações públicas, EMERCOM, meteorologistas.

Antes do início do projeto, grande parte dos dados era enviada por email à empresa principal como anexos do Word / Excel. Em diante, parecia um pôr do sol feito manualmente: os dados foram processados ​​manualmente por uma equipe especialmente estudada e colocados em alguns sistemas. No final, houve dezenas de relatórios que formaram a base das decisões de gerenciamento.

A escolha da abordagem foi solicitada pelos formatos de arquivos usados ​​- xlsx / docx. Até o software legado suporta o upload de dados para esses formatos. Pelo menos copiar e colar pode ser o último suporte para ramificações.

Portanto, nosso plano opinativo era:

  1. Descreva a estrutura e o cronograma de cada relatório.
  2. Forneça às agências os regulamentos dos relatórios. As agências devem usar o software existente para enviar relatórios por e-mail. Se não houver software - envie relatórios manualmente como antes.
  3. Desenvolva o sistema que:

  • leva os documentos certos da caixa de entrada de e-mail;
  • extrai dados de documentos;
  • grava dados extraídos no DB e penaliza violadores de regulamentos.

imagem

Implementação


Questões de não desenvolvimento


Durante o estágio de coleta de requisitos, verificou-se que não há descrição da estrutura dos relatórios. Nada mesmo. A estrutura do relatório foi armazenada na cabeça de alguns funcionários e transferida verbalmente como contos populares. Essa questão foi resolvida com alguns esforços, mas o verdadeiro desafio começou mais tarde na configuração do estágio de troca de dados.

Primeira edição


Alguns dias após o lançamento da versão beta, revelamos uma lacuna entre a estrutura e o modelo do documento. Má qualidade dos dados: os relatórios apresentaram divergências nos valores, as colunas foram misturadas ou tiveram uma nomeação incorreta. Esses problemas ocorreram principalmente nas filiais onde os dados foram coletados e enviados manualmente.

Solução - implementação da verificação em três etapas:

  1. Fornecendo ramificações com amostras xlsx com estrutura corrigida pelas ferramentas do Excel. Somente células disponíveis nessas amostras foram inseridas nos dados. Algumas células recebem verificação adicional: tipo, convergência de somas etc.
  2. Verificação de dados durante a extração. Por exemplo, comparando a data e a data atuais no parágrafo do Word, a verificação aritmética dos dados para documentos do Excel (se não for possível definir as ferramentas xlsx).
  3. Análise profunda de dados após extração. Por exemplo, detecção de desvios significativos por indicadores-chave em comparação com períodos anteriores.

Segunda edição


Uma violação sistemática do cronograma de transferência de dados ou tentativas inescrupulosas de sabotagem: "Nunca enviamos dados a ninguém, e aqui está você com isso ...", "Enviei tudo! A tempo! Provavelmente você não conseguiu por causa de uma latência ruim ".

Feedback tornou-se uma solução. O software notifica automaticamente as pessoas responsáveis ​​na filial em caso de violação do cronograma.

Algum tempo depois, o módulo de feedback foi conectado ao módulo de verificação da qualidade dos dados e ao módulo de geração de relatórios finais. Dessa forma, o ramo recebe imediatamente um resumo dos dados próprios e uma comparação com os "ramos vizinhos". Portanto, seria claro para um ramo, por que foi repreendido.

Módulos desenvolvidos


Ferramenta de configuração de modelos de relatório, que descreve:

  • atributos para identificar um relatório;
  • regulamentos de transmissão;
  • algoritmo de extração de dados;
  • outros atributos, como o caminho para o código que valida e armazena os dados.

Um aplicativo de email que move anexos para um armazenamento isolado (sandbox) e armazena informações associadas a cartas;

Um analisador de anexo que identifica o relatório e extrai dados.

imagem

Ferramenta de configuração


Historicamente, as cartas com relatórios são enviadas para o endereço de e-mail comum, bem como para muitas outras cartas importantes ou sem importância. É por isso que precisamos de atributos para identificar os tipos de anexos de relatório. O uso de determinado nome ou texto de documento no corpo do email não é confiável e desconfortável para o remetente. Por isso, decidimos que a identificação do relatório será determinada apenas por um conteúdo.

O brainstorming resultou em vários atributos para identificar o tipo de relatório por conteúdo: cor do texto da célula, fonte, etc. Mas a maneira mais adequada é a presença de substring em uma determinada célula - "slot" ou em uma matriz de células para o Excel. Para o Word, usamos parágrafo ou título.

Adicionamos uma lógica de comparação simples para o "slot": "igual", "desigual", "mais", "menos" e assim por diante. Exemplo para o relatório do Excel: no intervalo de A2-E4, o texto da célula deve ser igual a "Relatório diário de carregamento do equipamento".

imagem

De maneira semelhante, configuramos a área de pesquisa para o início e o fim dos dados.

Abaixo está um exemplo de condição de pesquisa para os dados que terminam: “2 linhas em branco em uma linha”.

imagem

Algumas outras configurações: uma lista de remetentes permitidos, um tipo de documento (Excel / Word), um caminho para a exportação de dados.

A saída é a estrutura JSON (modelo) que descreve o relatório.

Aplicativo de email


Este aplicativo é um leitor de caixa de entrada de email que coloca todos os anexos na sandbox, salva atributos de email, define anexos na fila de análise.

Enfrentamos dois problemas de segurança:

  1. e se o nome da filial no relatório acidentalmente (ou não) for substituído por outro nome da filial?
  2. e se o relatório for enviado por invasores?

O primeiro problema é resolvido verificando o endereço de email do remetente da filial e o nome da filial especificado no corpo do relatório.

A segunda questão foi resolvida usando o SPF .

Analisador de anexo


Quase todas as bibliotecas de análise do Word e Excel oferecem suporte apenas a determinadas versões / extensões. Por isso, decidimos usar a conversão "Libre Office" para trazer os arquivos para um único formato. Por exemplo, entradas: odt, doc, docx (2007, 2010, 2013) ... converter em docx (2016).

Após a conversão:

  1. filtramos uma variedade de modelos de relatório com base nos atributos básicos, como Word ou Excel, o remetente pertence à lista permitida;
  2. ameaçar o relatório com os demais modelos;
  3. se um relatório corresponder ao modelo - extraia os dados e transfira-os para o repositório.

Retomar


Nós conseguimos!

Após dois meses de trabalho meticuloso, a sede começou a receber dados para relatórios de todas as filiais regularmente.

A qualidade e a integridade dos dados tornam-se melhor sem precedentes do que eram antes. O software implementado liberou recursos humanos que pagaram os custos do projeto até o final do ano.

Aprendemos por nós mesmos que o processo de integração nem sempre é doloroso e identificamos os principais aspectos do sucesso:

  1. não entramos nos sistemas nos galhos;
  2. formalizamos e aprovamos uma estrutura unificada de relatórios e cronograma de transferências;
  3. fizemos amostras de saída para cada tipo de relatório com verificação integrada;
  4. usamos a maneira mais comum de fornecer dados - um email.

Como última palavra, essa abordagem tem duas desvantagens principais:

  1. baixa velocidade de entrega de dados;
  2. o tamanho do pacote de dados não deve ser maior que o anexo médio de e-mail.

Source: https://habr.com/ru/post/pt436240/


All Articles