- Backend Part I - Sistema de Busca, Processamento e Anonimização de Tickets GLPI
- Backend Part II - Comparar Ticket Buscado com os Demais, Recomendando OS Similares e Resposta
Converta e processe tickets do GLPI, anonimizando informações sensíveis e armazenando os dados em um formato JSON.
- Inicialize e autentique com a API GLPI.
- Busque detalhes do ticket, incluindo informações gerais, detalhes de acompanhamento e soluções.
- Anonimize informações sensíveis, como CPFs.
- Processe o conteúdo do ticket, removendo tags HTML e imagens.
- Salve os detalhes processados em um arquivo JSON.
As informações de configuração da API GLPI são carregadas a partir de um arquivo .env
. Você precisa configurar as seguintes variáveis:
GLPI_API_URL
GLPI_API_APP_TOKEN
GLPI_API_USER_TOKEN
🚨 Atenção: Certifique-se de configurar os privilégios do usuário da API para carregar os tickets. Pode ser necessário associar o usuário aos grupos ou o sistema pode receber acesso negado a certos tickets.
-
Configure API URL (Caminho: GLIP - Configurar - Geral - API, exemplo: http://192.168.0.155/apirest.php/)
-
Configure API APP TOKEN (Caminho: GLIP - Configurar - Geral - API - Criar/Configurar Cliente de API - Token da aplicação [app_token])
-
Configure IPv4 Address (Caminho: GLIP - Configurar - Geral - API - Criar/Configurar Cliente de API - configure o intervalo de endereço IPv4)
-
Configure API USER TOKEN (Caminho: GLIP - Administração - Usuários - Busque/Crie o usuário - API token)
OPENAI API - As informações de configuração da API da OpenAI também são carregadas a partir do arquivo .env
. Você precisa configurar a seguinte variável:
OPENAI_API_KEY
- Acesse o site da API da OpenAI, faça o login e certifique-se de ter um plano ativo para as capacidades de embeddings e geração de texto. Existe um plano gratuito que pode atender a demanda de alguns, mas recomenda-se o plano anual de $5 dólares, que deve ser suficiente para uma grande quantidade de embeddings de tickets.
- Coloque os IDs dos tickets que você deseja processar no script. 1.1. Você pode fornecer um único ID ou um intervalo de IDs.
- Execute o script principal.
- Os tickets processados e anonimizados serão salvos em um arquivo JSON.
- Python 3.x
- Bibliotecas:
requests
,bs4
,re
,os
,html
,json
,dotenv
- API GLPI configurada e acessível.
config.py
: Contém configurações e constantes.api_utils.py
: Contém funções relacionadas à API.content_utils.py
: Contém funções de processamento e anonimização de conteúdo.main.py
: Contém a lógica principal para buscar e salvar dados do ticket.
Sinta-se à vontade para fazer fork do projeto, abrir issues e fornecer pull requests.
Este projeto está licenciado sob a Licença MIT.
-
Execução: Dentro da função main, a inicialização da sessão é chamada e os IDs dos tickets são fornecidos O sistema possúi forma de buscar tickets de forma individal ou em um intervalo, e o processamento dos tickets é iniciado.
-
Inicialização da Sessão: Uma sessão é iniciada com a API GLPI usando as credenciais e se a sessão for iniciada com sucesso, um token de sessão é retornado para ser usado nas consultas.
-
Anonimização de CPFs: O sistema possui uma função (mask_cpf) que identifica e anonimiza CPFs nos dados dos tickets. Os CPFs no formato ###.###.###-## ou ########### são substituídos por "[#]".
-
Coleta de Detalhes do Ticket: Essa função busca do sistema os detalhes do ticket da API GLPI, incluindo informações gerais inciais, detalhes de acompanhamento e soluções. (por enquanto os itens cadastrados como "Tarefas" não são coletados.
-
Processamento dos Tickets: O sistema itera sobre os IDs dos tickets fornecidos. Para cada ticket, a função de coleta de detalhes é executada, o conteúdo é anonimizado para remover CPFs com a função Anonimização e a função de Limpar HTML também é passada para remover as tags HTML e as imagens. As informações do ticket, incluindo perguntas e respostas, são estruturadas em um formato específico e adicionadas a uma lista JSON. As perguntas (questions) são formadas pelos detalhes inicais informados na abertura do ticket, e também acompanhamentos que são feitos exclusivamente pelos usuários que abriram o ticket. As respostas (answers) são formadas pelos acompanhamentos realizados por usuários que não abriram a OS e por soluções enviadas no encerramento do ticket.
-
Salvando em JSON: Após processar todos os tickets e passar os filtros e tratamentos necessários, o sistema salva os detalhes em um arquivo JSON.
- Se ID da os no SmartGLPI DB:
- Faz toda a questão das comparações de vetores embed com outras OSs já cadastradas.
- Se NÃO no banco no SmartGLPI DB:
- Busca no banco do GLPI. Se no banco do GLPI:
- Roda o cadastro de novas OSs passando o ID.
- Faz toda a questão das comparações de vetores embed com outras OSs já cadastradas.
- Se Não (OS inexistente no GLPI ou erro na conexão).
- Busca no banco do GLPI. Se no banco do GLPI:
- 1 vez por dia, For em Todas as OS:
- Verifica se a última atualização no GLPI daquela OS é igual à que está no banco SmartGLPI:
- Se não for igual:
- Então atualiza o registro (Question and Answers).
- Se a atualização de registro for um acompanhamento feito pelo usuário que cadastrou a OS:
- Atualiza Vector Embed.
- Aguarda 22 segundos (Free Plan).
- Se não for igual:
- Verifica se a última atualização no GLPI daquela OS é igual à que está no banco SmartGLPI:
- 1 vez por dia:
- Pega o último ID do banco do GLPI.
- Roda o cadastro de novas OSs passando uma (Lista de todos os ids que estão no GLPI DB e que não estão no SmartGLPI DB).