
O desenvolvimento moderno das tecnologias de TI tornou possível conter os enormes fluxos de dados.
A empresa possui várias ferramentas: CRM, ERP, BPM, sistemas de contabilidade ou, em casos extremos, apenas Excel e Word.
As empresas também são diferentes. Alguns são compostos de muitos ramos separados. Nesse caso, a empresa tem um problema de sincronização de dados no zoológico dos sistemas de TI. Além disso, as filiais diferem em fornecedores ou versões de software. E mudanças frequentes nos requisitos de relatórios da empresa de gestão causam ataques de "alegria" descontrolada no campo.
Esta história é sobre um projeto no qual encontrei o caos que precisava ser sistematizado e automatizado. Um orçamento modesto e prazos apertados limitavam o uso da maioria das soluções industriais, mas abriam espaço para a criatividade.
Formato universal
O cliente definiu a tarefa de coletar dados para relatórios de todas as filiais da empresa. Para entender a escala do desastre, existem dezenas de sistemas, incluindo monstros criados por si mesmos e monstros como o SAP e, é claro, 1C - onde sem ele.
Em um relatório, dados de: escrituração contábil, reparadores, especialistas em relações públicas, Ministério de Emergências e meteorologistas poderiam se cruzar.
Antes do início do projeto, a maior parte dos dados era enviada à empresa-mãe por email, na forma de anexos do Word / Excel. Além disso, o processo se assemelhava a um pôr do sol manualmente: os dados foram processados por pessoas especialmente treinadas e inseridos em alguns sistemas. O resultado do trabalho foram dezenas de relatórios, com base nas quais as decisões gerenciais foram tomadas.
A escolha da abordagem foi solicitada pelo formato dos arquivos transferidos, ou seja, xlsx / docx. Mesmo os sistemas "antigos" nas filiais suportavam o upload de dados para esses formatos, bem, ou em casos extremos, ninguém cancelava copiar e colar.
Nosso plano teimoso era o seguinte:
- descrever a estrutura de cada relatório e as regras para sua transmissão;
- reduzimos os requisitos para configurar sistemas para enviar documentos por email, de acordo com os regulamentos para as filiais. Onde não há sistemas - enviando, como antes, manualmente;
- Estamos desenvolvendo um programa que:
- seleciona certos documentos do correio recebido;
- extrai dados deles;
- grava os dados extraídos no banco de dados, além de "derrotar" os violadores dos regulamentos.

Implementação
Questões organizacionais
Na fase de coleta e formalização dos requisitos para a estrutura e regulamentação da transferência de dados, verificou-se que não havia descrição da estrutura dos relatórios. Tudo estava guardado na mente de alguns funcionários e era transmitido como contos folclóricos russos de boca em boca. Mas os problemas reais começaram mais tarde - ao configurar a troca de dados.
Problema um
A diferença entre a estrutura dos documentos da referência e a qualidade dos dados. Nos relatórios, as quantias às vezes não convergiam, as colunas eram misturadas ou tinham nomes incorretos. O problema foi observado principalmente em filiais onde os dados foram direcionados manualmente.
A solução é a implementação de uma verificação em três etapas:
- Criando documentos de referência do Excel com uma estrutura rígida, usando o próprio Excel. Nesses documentos, apenas as células de entrada de dados estavam disponíveis. Sobre as quais foram impostas verificações adicionais: tipo, convergência de montantes etc.
- Verifica ao extrair dados do relatório. Por exemplo, uma comparação da data e data atuais em um parágrafo de um documento do Word ou aritmética verifica os dados de um documento do Excel (se eles não puderem ser especificados no próprio documento).
- Análise profunda dos dados após a coleta. Por exemplo, a detecção de desvios significativos nos principais indicadores em comparação com períodos anteriores.
Segundo problema
Uma violação sistemática do cronograma de transferência de dados ou tentativas inescrupulosas de sabotar: "Em geral, nunca enviamos dados a ninguém, mas aqui está você mesmo ...", "Sim, enviei tudo a tempo, provavelmente é um ping ruim."
A solução é feedback. O sistema notifica automaticamente as pessoas responsáveis na filial em caso de violação da programação. Posteriormente, o subsistema de feedback foi parafusado no sistema de controle de qualidade dos dados de entrada e no sistema de relatório final, para que a filial recebesse imediatamente um conjunto de dados e uma comparação com os "vizinhos".
Para deixar claro por que ele faz uma varredura.Subsistemas desenvolvidos
- Configurador de tipos de documentos com dados, nos quais você pode descrever rapidamente:
- sinais para identificação do documento;
- regulamentos de transferência;
- algoritmo de extração de dados;
- outros atributos, como o caminho para o código que valida e armazena os dados.
- Um destinatário de email que move anexos para um armazenamento isolado (sandbox) e armazena informações relacionadas sobre a carta;
- Um analisador de anexo que define tipos de documentos e extrai dados deles.

Configurador
Historicamente, todos os documentos com dados são enviados para o correio geral, onde estão cheios de outras cartas importantes e não tão importantes. Precisamos de sinais pelos quais os documentos necessários serão determinados. O nome do documento ou o texto no corpo do email não é confiável e inconveniente para o remetente. Portanto, foi decidido que a participação no relatório será determinada apenas pelo conteúdo do documento. Além disso, você deve determinar sem ambiguidade o tipo de relatório que o documento contém.
Eles criaram um brainstorming rábano sabe quantos sinais para identificar um documento: cor do texto em uma célula, fonte, etc. Mas o mais correto foi o sinal da presença de uma subcadeia em um determinado "slot" de célula ou uma matriz de células para Excel e um parágrafo ou cabeçalho para o Word. Uma lógica formal simples foi adicionada para o "slot": "igual", "desigual", "mais", "menos" etc. etc. Exemplo para Excel: no intervalo A2-E4, o texto da célula deve ser igual a "Resumo diário do carregamento do equipamento".

A área do documento na qual você deseja pesquisar o início e o final dos dados é configurada de maneira semelhante (aprox. Condições para encontrar o final: 2 linhas em branco seguidas).

Outras configurações úteis incluem uma lista de remetentes resolvidos, um tipo de documento (Excel / Word) e um caminho para exportar dados.
Na saída, obtemos uma estrutura JSON (modelo) que descreve o relatório.
Destinatário do correio
Um leitor de correio que coloca todos os documentos dos anexos na caixa de areia, salva os atributos da carta e coloca os documentos na fila de tarefas para análise.
Existem 2 perguntas de segurança:
- E se os dados forem enviados para outra filial?
- e se os dados forem enviados pelos atacantes?
O primeiro problema é resolvido reconciliando o endereço de email da filial remetente e a filial especificada no corpo do relatório.
O segundo está usando o
SPF .
Analisador de Anexo
Quase todas as bibliotecas para analisar o Word e o Excel têm sérias limitações nas versões suportadas; portanto, para começar, o documento precisa ser convertido. O Libre Office resolve esse problema às cinco.
Após a conversão:
- filtramos uma matriz de modelos de acordo com as características básicas do configurador (Word / Excel, remetente ...);
- execute o documento com os modelos restantes;
- se o modelo for encontrado, extraímos os dados e transferimos para o repositório.
Sumário
Nós conseguimos!
Após dois meses de trabalho meticuloso, a sede começou a receber regularmente dados para relatórios de todas as filiais. Além disso, a qualidade e a integridade dos dados eram sem precedentes diferentes do que eram antes, e os recursos humanos liberados recuperaram os custos do projeto até o final do ano.
Aprendemos por nós mesmos que a integração nem sempre é dolorosa e destacamos os principais aspectos do sucesso:
- não entramos nos sistemas nas filiais;
- formalizou e aprovou uma estrutura única de relatórios e regulamentos para sua transmissão;
- criou modelos de formatos de saída geralmente disponíveis para todos os sistemas na forma de documentos Excel e Word;
- escolheu o método mais comum de entrega de dados - email.
E duas principais desvantagens:
- Baixa velocidade de entrega de dados.
- O tamanho do pacote de dados não deve exceder o tamanho de um anexo de email comum.