Ascensão dos robôs. Parece ser algo incrível. E mesmo que seja provável, isso acontecerá em breve. No entanto, vale a pena considerar - a equipe de robôs de nossos parceiros cresceu 22 carros em um ano. E eles claramente não vão parar. E de repente, a próxima atualização não ocorrerá conforme o planejado e o robô a abandonará. Ou diga que ele estava cansado de trabalhar em contabilidade. Mais detalhes sob o corte!
Botão - back office para empreendedores. Realizamos escrituração contábil, resolvemos questões legais e retiramos a rotina.Este artigo é uma continuação deste:
Ascensão das máquinas: como os robôs capturaram a contabilidade .
Dou a palavra ao autor.Quantos robôs e por que eles precisam de nós
Agora, 64 robôs são lançados regularmente. Precisamos de robôs não apenas para o trabalho intelectual, mas também para a queima diária de panelas. Por exemplo, para coletar estatísticas, monitorar informações de 1C para nosso aplicativo. Os robôs ajudam a faturar e até limpar o lixo atrás de outros robôs.
Para automatizar o trabalho de um contador, trabalhamos em estreita colaboração com os bancos de dados em 1C. Tentamos diferentes opções para isso. Vamos contar com mais detalhes.
Interoperabilidade através do COM. Historicamente, esta é a primeira maneira que conseguimos estabelecer a interação. Temos um trabalho confiável ao gravar no banco de dados 1C, mas cumprimos os contras:
- As conexões são estabelecidas por um longo tempo, às vezes congelam ou interrompem inesperadamente.
- Você precisa se conectar a cada base 1C separadamente, contornar todas as bases pode levar horas.
Interação através do banco de dados postgreSQL usando um tradutor. Essa abordagem nos deu uma imagem geral do estado dos bancos de dados 1C de cada cliente. Por exemplo, existem contrapartes duplicadas ou documentos lançados incorretamente.
Prós:
- A conexão ao banco de dados é muito rápida.
- Você pode trabalhar imediatamente com um cluster inteiro de bancos de dados 1C, o que aumenta a velocidade de processamento em ordens de magnitude.
Contras:
- Funciona apenas na leitura do banco de dados. Teoricamente, o trabalho de gravação também pode ser feito, mas para isso é necessário repetir toda a lógica 1C - é impraticável.
- O desenvolvimento consome mais tempo e o suporte ao processo é mais complicado do que no método COM.
Interação através do OData. Tentei recentemente.
Prós:
- Não há problema com congelamentos ou conexões interrompidas
Contras:
- A primeira operação leva notavelmente mais tempo que as subsequentes, embora a conexão seja estabelecida rapidamente.
- São necessários investimentos na infraestrutura de interação para usá-la da maneira mais conveniente possível no caso da COM.
- Esforços adicionais são necessários para administrar 1C, especialmente ao atualizar a configuração.
Interação através de serviços web. Essa abordagem foi testada relativamente recentemente.
Prós:
- Funciona rapidamente e sem demora.
Contras:
- Precisamos de desenvolvimento dentro da plataforma 1C, o ambiente para nós não é padrão, portanto ainda não há competências suficientes e é necessária infraestrutura adicional para implementar totalmente o IC.
- Como no caso do COM e OData, as tarefas só podem ser resolvidas em um banco de dados 1C.
Os robôs precisam ser controlados
Os robôs são imperfeitos. Como seus criadores, eles tropeçam, caem e quebram. Os motivos podem ser muito diferentes: configuração incorreta dos serviços, erros no código, problemas no nível do hardware - falhas de hardware. É importante descobrirmos o mais rápido possível. Porque existem muitos processos de negócios da empresa vinculados a robôs. Criamos robôs de monitoramento para acompanhar todos.
Monitoramos quando o robô foi iniciado pela última vez. Se sabemos que ele deve começar uma vez por hora, mas está em repouso por 3 horas, é uma ocasião para estimulá-lo.
Acontece que um robô finge estar trabalhando, mas na verdade está congelado. Para entender isso, olhamos no diário, que o robô escreve sobre seu trabalho. Se as entradas não aparecerem por tempo suficiente, você precisará reiniciá-lo.

Existem robôs nos quais as consequências de erros e quedas não são imediatamente perceptíveis. Para perceber que algo estava errado a tempo, criamos métricas que se concentram nos resultados do trabalho. Então, controlamos os robôs mais importantes.
Por exemplo, um condutor de robô é importante para nós. Ele garante que os documentos recebidos sejam levados em conta corretamente em 1C. O robô faz uma rodada de todas as bases 1C em 3-4 horas - meio dia útil. Lembre-se de que atendemos 1300 empreendedores. Em cada rodada, o robô não entra em nenhuma base. Provavelmente, apenas no dia seguinte, o contador notará que o robô não procurou uma base específica.
Esse robô trabalhou para avaliar em um banco de dados específico - uma tarefa séria separada para um contador que, além de conduzir documentos, tem outras tarefas para prestar contas e aconselhar clientes. Portanto, na realidade, esse erro pode ser percebido somente após uma semana ou até um casal. E com o tempo, documentos com falha - um imposto calculado incorretamente.
Portanto, configuramos o robô para que ele registre quais bases foram usadas e quando e, neste caso, vemos quantas bases o robô não ignorou e por quanto tempo. Como resultado, chamamos a atenção do contador para onde é necessário e no momento certo.

Os robôs precisam ser alterados
Nos sonhos de um futuro robótico, pode-se esperar que um robô brilhante que acabou de sair da linha de montagem faça seu trabalho para sempre, e seremos capazes de fazer algo mais interessante. Na vida real, não é assim. O tempo passa e o que ontem parecia um trabalho bastante adequado, hoje não está mais satisfeito. A qualidade do resultado não é que ele funcione muito lentamente ou faça o que não faz sentido na situação alterada. Os robôs estão envelhecendo e precisam ser atualizados.
Consolidação do robô
Alguns robôs estão envolvidos em tarefas relacionadas, mas suas ações não são coordenadas ou eles esperam um pelo outro por um longo tempo. Desmontamos esses robôs e montamos um que está envolvido em todas as tarefas relacionadas.
Sempre mantemos robôs que trabalham em uma tarefa com uma pessoa, "em serviço" em antecipação ao trabalho que recebem de uma pessoa.
Pegue, por exemplo, o processo de conversão de digitalizações de documentos em papel em documentos registrados em 1C. Anteriormente, vários robôs faziam isso juntos:
- Um bicho-papão descompacta os arquivos em arquivos separados, e o pdf com várias páginas se transforma em várias fotos.
- O robô classificador examina as imagens, categoriza e organiza-as em pastas.
- Em seguida, o robô de reconhecimento faz seu trabalho.
Após o trabalho, o contador principal é conectado para verificar e corrigir o robô, se necessário. Depois da pessoa, um robô é conectado, o que salva os documentos em 1C e, em seguida, um condutor de robô que os conduz. Todos esses robôs foram configurados no modo de pesquisa. De vez em quando, eles começavam sua própria programação e procuravam ver se havia trabalho. Se houver, eles fizeram e depois adormeceram novamente.
Como existem muitos robôs, os atrasos foram adicionados à programação de cada robô. Aconteceu que, a partir do momento em que vimos o documento, percebemos isso, começamos a trabalhar com ele antes que o documento completo apareça no banco de dados 1C, pode levar meia hora ou até uma hora. Para informar o cliente da alíquota atual nos documentos disponíveis, o contador teve que esperar muito tempo. Então, como você deseja atender o cliente online.
Para uma nova solução, desmontamos os robôs por peças e montamos dois novos. O primeiro transforma arquivos e arquivos PDF em documentos que já podem ser enviados para 1C. Então a pessoa verifica o trabalho, se necessário - algo governa. O segundo robô imediatamente pega o documento após a verificação, o salva e o mantém em 1C.
Agora, o trabalho está configurado no modelo de evento: os robôs estão sempre no modo de espera e reagem imediatamente quando uma pessoa termina sua parte.
Melhoria do robô
Depois de reduzir o tempo para guardar um documento em 1C, encontramos outro problema. Registramos casos em que documentos foram perdidos do nosso lado. Eu tive que solicitá-los novamente ao cliente, o que é extremamente desagradável. Apenas resolvendo esse problema agora. E parece que vamos desmontar e montar novos robôs novamente.
Também treinamos redes neurais para classificar e transformar documentos em outros mais neurais e de malha. Isso deu um aumento de precisão de 1%. Algumas centenas de páginas a mais por semana não precisam mais de atenção humana.
Atualização do robô devido a mudança de plataforma
Na última vez , falamos sobre por que decidimos mudar de Java para Dotnet e como era. Há um ano, ainda havia muito código Java. Serramos incansavelmente esse peso de ouro. E somente em março eles conseguiram desligar completamente os servidores nos quais o Java estava sendo executado. Junto com ela, parte dos robôs também foi para outro mundo.
Novos robôs
Tegun
Os clientes nos escrevem sobre várias questões. Para que essas perguntas encontrem o artista, as categorizamos com tags. No começo, as pessoas fizeram isso, mas decidimos facilitar o trabalho deles e escrevemos um robô. E eles o chamaram - テ 軍 (Daegun).
A primeira versão foi muito simples. O trabalho em nossa aplicação é organizado em forma de correspondência com filiais. Pode haver várias tarefas em uma ramificação. O robô categorizou - coloque uma etiqueta, com base em qual etiqueta estava nessa correspondência. Obviamente, em novos galhos onde ainda não há etiqueta, o robô não fez nada. Em tal implementação, o robô processou 40% do trabalho das pessoas, enquanto estava enganado em 10% dos casos.
Para que o robô possa determinar o artista em novos galhos, nós o ensinamos a ler. Para fazer isso, usamos regressão logística e aumento de gradiente para previsão, em combinação com tf-idf e WordToVec para leitura. A versão mais recente do robô permitiu levar 60% do trabalho das pessoas. Conhecimento é poder! Embora o robô tenha começado a cometer erros em 15% dos casos, as tarefas ainda começaram a chegar aos artistas mais rapidamente.
Enviando relatórios
Nem sempre a inteligência é necessária para realizar o trabalho necessário e útil. Programadores e contadores sabem que a rotina pode levar até 80% do tempo. Por exemplo, para enviar o relatório SZV-M, o contador da folha de pagamento deve abrir o banco de dados 1C, pressionar cerca de dez botões, inserir dados nos intervalos, esperar até 1C dizer "está tudo bem" e fechar o banco de dados.
Cada uma dessas operações leva 5 minutos. Um pouco. Porém, para fazer isso para todos os clientes de botão que precisam de um relatório (existem cerca de 600), você precisará gastar 5 * 600/60/8 = 6 dias úteis de trabalho mecânico contínuo. Vários robôs clones que fazem aproximadamente a mesma coisa fazem o trabalho em um dia. Lembre-se de que esse relatório deve ser enviado todos os meses e dias úteis em um mês - 20. Um terço do tempo de trabalho de um contador seria gasto apenas no envio contínuo do relatório.
Sincronização com 1C
Outra classe importante de robôs que apareceram no ano passado são os sincronizadores.
Nosso aplicativo possui documentos e extratos bancários que estão intimamente relacionados aos dados nos objetos 1C. É importante para nós que o estado do aplicativo corresponda ao estado de coisas em 1C o mais próximo possível. Usamos isso para pesquisar duplicatas, pesquisar objetos de forma conveniente e exibir os dados corretos para os clientes. Usando a interação através do banco de dados postgreSQL, conseguimos rastrear as alterações que ocorrem no 1C e refleti-las rapidamente no banco de dados do aplicativo. No momento, a discrepância no tempo não excede 5 minutos.
Os robôs se beneficiam
Não podemos mais recusar robôs. Eles automatizam uma parte significativa da rotina, tanto que nos permitiu crescer na base de clientes, sem aumentar proporcionalmente a equipe de contadores. Se desligarmos nossos robôs, em algum lugar perderemos duas horas no tempo de resposta imediatamente e em algum lugar começaremos a cometer erros ou pular erros.
Nossos contadores já estão amplamente focados em métricas que mostram o resultado de um robô específico. Isso nos permite “ensaiar relatórios” um mês antes dos relatórios reais. Planeje em dias reais quanto tempo precisamos para conseguir gerar relatórios e entregá-los no prazo. Este é um grande passo em direção à transparência e confiabilidade do processo contábil do cliente.
Ainda assim, os robôs ainda são poucos, você precisa de um homem. Porque os robôs quebram e precisam ser reparados. Os robôs podem cometer erros, eles precisam ser verificados e treinados. Outra dificuldade é a criação de uma interação efetiva entre robôs e humanos. Por um lado, é necessário criar robôs convenientes para os seres humanos e, por outro lado, ser capaz de ensinar às pessoas como usá-los.
Obrigado pelo artigo de Vasily Chernoyvan.