Skip to main content

Services

 Esta seção documenta de forma resumida os arquivos presentes na pasta services, que reúnem funcionalidades reutilizáveis da aplicação de campo.

api_auth.py

 Esse serviço é responsável por autenticar a aplicação com a API da plataforma. Ele carrega as credenciais salvas no arquivo .env (e-mail e senha) e faz uma requisição de login para obter um token de acesso. Esse token é necessário para realizar ações autenticadas na API, como publicação de dados. Se as credenciais estiverem ausentes ou incorretas, uma exceção é lançada.

api_client.py

 Esse serviço define a classe APIClient, que facilita a comunicação com a API autenticada. Ao ser instanciado com a URL base e o token de acesso, a classe permite fazer requisições POST com os headers apropriados. Isso centraliza e simplifica o envio de dados para a API.

publish_service.py

 Esse serviço cuida de toda a lógica de publicação dos dados da aplicação para a API, incluindo expedições, prédios, imagens e fissuras detectadas.

 - publish_expedition: envia os dados da expedição, convertendo o caminho da imagem de capa para a URL no S3.
 - publish_building: envia os dados de um prédio, também ajustando a URL da foto da fachada.
 - publish_image: publica uma imagem associada a um prédio e, caso detecte fissuras, chama a função de publicação dessas anotações.
 - publish_fissures: publica os detalhes das rachaduras detectadas em uma imagem.
 - publish_full_inspection: executa todo o fluxo de publicação para todas as expedições e prédios locais. Após o sucesso, remove os dados locais da pasta imagens/inspecoes.

 Esse serviço automatiza o processo de integração entre a aplicação de campo e o backend da aplicação web.

s3_uploader.py

 Esse serviço é responsável por fazer o upload de todas as imagens da aplicação para o bucket S3. Ele percorre recursivamente a pasta imagens/inspecoes, identifica arquivos de imagem (.jpg, .png, .jpeg), e envia cada uma para o bucket definido, renomeando os caminhos usando _ para evitar conflitos com o formato do S3.

model.py

 Esse serviço é responsável por carregar e executar o modelo de detecção de rachaduras usando a biblioteca ultralytics (YOLO). Ele processa todas as imagens do prédio, gera versões com as fissuras detectadas e salva os resultados na pasta resultados.

 Além disso, o serviço contabiliza as fissuras detectadas por categoria e armazena os dados em arquivos JSON (crack_info.json e fissures_per_image.json). Também oferece uma função para recuperar a lista de imagens onde rachaduras foram identificadas.

image_utils.py

 Esse serviço oferece funções auxiliares para lidar com imagens capturadas. Ele permite salvar frames no disco (save_image) e listar imagens por direção, tanto originais quanto as processadas pelo modelo de detecção. As imagens são organizadas por prefixo, como Norte_, Sudeste_, etc., facilitando sua exibição agrupada por sentido na aplicação.

file_manager.py

 Esse serviço gerencia a estrutura de diretórios onde ficam armazenadas as inspeções e os prédios. Ele permite criar novas pastas para expedições e prédios, recuperar a lista de expedições existentes e listar os prédios de uma expedição específica. Toda a estrutura é organizada dentro da pasta imagens/inspecoes.

drone.py

 Esse serviço lida com a comunicação com o drone utilizado na captura de imagens. Ele envia comandos via UDP para iniciar e parar o stream de vídeo (streamon/streamoff) e usa OpenCV para capturar os frames da transmissão ao vivo. O start_video_capture retorna um objeto VideoCapture pronto para leitura de frames, enquanto stop_video_capture encerra o stream.