O sistema Repair All oferece uma solução completa e inteligente para o gerenciamento operacional de oficinas automotivas. Ele permite o cadastro ágil de produtos, controle granular de entradas e saídas de peças e, como grande diferencial, utiliza um modelo nativo de Machine Learning (Regressão Linear) para prever o comportamento e a demanda do estoque.
Ideal para oficinas que buscam evitar o desabastecimento de peças críticas (como pastilhas de freio e óleo), otimizar o fluxo de caixa através de compras baseadas em dados e garantir um atendimento sem interrupções. Tudo isso entregue através de uma interface rápida e reativa construída com SSR moderno.
✅ O sistema Repair All é ideal para:
- Prevenção de Faltas (Stockouts): A inteligência artificial analisa o histórico de saídas para ordens de serviço e prevê exatamente quando e quanto repor;
- Histórico Imutável: Modelagem de dados baseada em eventos (Append-Only) para garantir integridade fiscal e criar bases sólidas para algoritmos de séries temporais;
- Alta Performance e UX: Front-end monolítico moderno utilizando Thymeleaf, Tailwind CSS e HTMX, oferecendo a reatividade de uma Single Page Application (SPA) sem a complexidade de gerenciar múltiplos projetos;
- Desacoplamento Estatístico: Arquitetura limpa onde o motor de cálculo preditivo roda diretamente na JVM (Java), sem depender de serviços externos em Python.
Para prever o comportamento do estoque sem a necessidade de infraestruturas pesadas, o MVP implementa um algoritmo de Regressão Linear Simples desenvolvido nativamente. A regressão linear encontra a reta de melhor ajuste para uma série temporal de dados de saída (consumo).
Matematicamente, a previsão da demanda futura é calculada pela equação da reta y = ax + b, onde:
-
$y$ = A quantidade prevista de peças que precisarão ser repostas. -
$x$ = O índice do período no tempo (ex: o próximo mês a ser previsto). -
$a$ = A inclinação da reta (a tendência matemática de alta ou baixa na demanda), calculada por:
-
$b$ = O coeficiente linear (ponto de interceptação no eixo Y), calculado por:$$b = \frac{\sum y - a(\sum x)}{n}$$
Aplicações no Fluxo do Sistema:
- Extração de Dados: Uma Native Query altamente otimizada no PostgreSQL agrupa o histórico imutável das movimentações de saída mês a mês para cada produto.
-
Transformação Estrutural: Os meses são convertidos para o eixo
$X$ (1, 2, 3...) e a volumetria de peças que saíram para o eixo$Y$ . -
Inferência Preditiva: A classe de domínio estritamente matemática (
LinearRegressionPredictor) executa as equações acima e injeta o próximo período ($n + 1$ ) na fórmula para descobrir o valor exato de reposição sugerida.
Antes de começar, verifique se você atendeu aos seguintes requisitos:
- Java 17+ para executar o artefato JAR;
- Maven 3.9+ para empacotar o projeto em um artefato JAR;
- PostgreSQL 17 para base de dados relacional;
- Variáveis de ambiente configuradas (consulte o arquivo
application.properties).
Para rodar a aplicação em seu ambiente, siga estas etapas:
Sem Docker (Execução Local):
1. Clone esse repositório
2. Ajuste as variáveis de ambiente localizadas em "application.properties" com as credenciais do seu banco de dados
3. Na raiz do repositório, execute o comando "mvn clean package"
4. Navegue até a pasta "target" e o seu artefato estará lá. Execute-o com o comando "java -jar (nome do artefato gerado).jar"
5. Acesse http://localhost:8080 no seu navegador. Feito! 😃repairall_db) já existe e que as credenciais estejam corretas.
Com Docker (Já instala as dependências e o banco de dados):
1. Na raiz do repositório, execute o comando "mvn clean package -DskipTests"
2. Em seguida, suba os contêineres em segundo plano com o comando "docker compose up --build"
3. Acesse http://localhost:8080. Feito! 😃💡 Dica: Para parar a aplicação no Docker, use o comando "docker compose down". Caso precise limpar o ambiente por completo (apagando o banco de dados e os volumes), digite "docker compose down -v".
Este projeto adota uma abordagem arquitetural unificada:
-
Controllers REST (/api/*): Endpoints isolados e prontos para consumo por aplicações mobile ou integrações de terceiros.
-
Controllers UI (/*): Rotas dedicadas a servir as páginas HTML processadas pelo servidor, utilizando Thymeleaf Layout Dialect para componentização e HTMX para atualizações assíncronas do DOM (ex: recálculo da tabela de previsão de IA sem recarregar a tela).
Por padrão, a aplicação fornece as seguintes opções de configuração principais contidas no arquivo application.properties:
spring.datasource.url=${URL_DATASOURCE:my-url-datasource}
spring.datasource.username=${USERNAME_DATASOURCE:my-username-datasource}
spring.datasource.password=${PASSWORD_DATASOURCE:my-password-datasource}Se você leu tudo e chegou até aqui, parabéns. Mas por hoje é só! 🎉

