Plataforma de Ordens de Serviço e Repasse
O repasse de uma equipe inteira saiu da planilha e virou processo auditável.
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS
- Supabase
- PostgreSQL
- Drizzle ORM
- Zod
- TanStack Query
- Recharts
- Vitest
- Playwright
- Vercel
- Situação
- Em produção desde jun/2026
- Sprints entregues
- 18
- Decisões documentadas
- 21 ADRs
- Níveis de acesso
- 4, isolados por RLS
O problema
O que estava acontecendo
O pagamento dos técnicos era calculado à mão, todo mês, sobre uma planilha exportada do sistema da operadora. A regra não é simples: o valor muda conforme o tipo de ordem de serviço, o motivo de uma visita improdutiva, o dia da semana e a existência de um segundo ponto.
O resultado era previsível. O fechamento consumia dias, ninguém conseguia refazer o cálculo de uma visita específica meses depois, e o técnico não tinha como conferir a própria pontuação. Recebia o valor final e a opção de aceitar.
Qualquer mudança de tabela de preço obrigava a recomeçar a planilha do zero, sem forma de simular o efeito antes de valer.
A solução
O que construímos
Construímos uma plataforma que recebe a planilha, entende a produção e devolve o repasse calculado, com o caminho do cálculo visível em cada visita.
O coração é um motor de regras de preço versionado. A tabela vigente nunca é editada: cria-se uma nova versão em rascunho, simula-se o efeito sobre as visitas que já existem e só então ela é ativada. Nenhuma mudança de regra pega a operação de surpresa.
O fechamento deixou de ser um arquivo e virou um ciclo: a gestão solicita a conferência, o técnico aprova ou contesta ordens específicas com justificativa, a gestão responde, e só então o período é fechado e marcado como pago.
A interface
Como ela se parece
Volume, ticket médio e taxa de finalização no topo; abaixo, a série do período cruzando produção e valor.
Recriação da interface, construída com os tokens visuais do projeto. Os números exibidos são ilustrativos, e nenhum dado real de cliente é reproduzido.
Funcionamento
Como funciona na prática
Importação
A planilha de produção do período é enviada pela plataforma. O parser normaliza os dados, identifica ordens e visitas, e registra o upload com contadores e erros. Se algo vier errado, dá para reprocessar.
Classificação
Visitas sem sucesso caem numa fila de motivos. A gestão define, por política, quais motivos são pagos e quais não. A decisão vale dali em diante, sem retrabalho manual.
Cálculo
O motor aplica a tabela de preço vigente a cada visita. O valor de cada linha é rastreável até a regra que o gerou.
Conferência
O técnico recebe o período no próprio app, confere ordem a ordem e contesta o que discorda, com motivo obrigatório. A gestão responde mostrando a pontuação antes e depois.
Fechamento
Com a conferência encerrada, o período é aprovado, fechado e marcado como pago. Reabrir deixa registro.
Escopo
O que o sistema faz
Gestão
- Dashboard executivo: volume diário, ticket médio, taxa de finalização, improdutividade e ranking de equipe
- Motor de regras de preço com versionamento, simulação e ativação controlada
- Fila de improdutivas com aprovação e rejeição em lote
- Fechamento mensal com aprovação, marcação de pagamento e reabertura auditada
- Histórico de uploads com auditoria e reprocessamento
Indicadores
- Índice de qualidade e produtividade por técnico, com tendência mensal
- Distribuição geográfica e motivos de não-conclusão
- Drill-down do valor não realizado, visita a visita
Campo
- App do técnico instalável (PWA) e distribuível como APK Android
- Notificação push com o app fechado
- Painel pessoal: produção do mês, taxa de sucesso e posição na equipe
- Contestação de ordem a qualquer momento, com resposta rastreável
Engenharia
Os problemas difíceis
O que exigiu decisão de arquitetura, não apenas código.
Regra de negócio que muda sem quebrar o passado
Preço não pode ser constante no código nem linha editável no banco. Modelamos a tabela como entidade versionada: cada visita guarda a versão que a precificou, então recalcular o passado é uma decisão explícita, nunca um efeito colateral de editar o presente.
Importação idempotente
A mesma planilha é reenviada com frequência, corrigida ou parcial. A ingestão precisa reconhecer o que já existe e atualizar sem duplicar, mantendo o histórico de cada envio auditável.
Isolamento por papel
Quatro níveis de acesso sobre a mesma base. O técnico não pode enxergar dados de outro técnico, nem a margem da empresa. O corte é feito no banco, com políticas de linha, não na interface.
Notificação com o app fechado
O técnico está em campo, com o app em segundo plano. Foi preciso Web Push com chaves VAPID e service worker próprio, além de empacotar a aplicação como APK para instalação direta em Android.
Resultado
O que mudou na operação
- O fechamento virou um processo com etapas, responsáveis e registro, em vez de um arquivo que passa de mão em mão
- Cada valor pago é rastreável até a regra que o gerou
- Mudança de tabela de preço pode ser simulada antes de valer
- O técnico confere e contesta a própria pontuação, o que tira a discussão do WhatsApp e coloca no sistema
- A gestão passou a ter indicador de qualidade e produtividade por técnico, com série mensal
Quer uma solução parecida?
Começamos entendendo a sua operação, não vendendo este sistema. Retorno em até 24h úteis. Sem proposta e sem compromisso.
Solicitar diagnóstico gratuitoContinue
Outros projetos
Portal de Indicadores Operacionais
Provedor regional de internet
Coletor agendado que extrai um sistema legado de dentro da rede corporativa e um portal na nuvem que consolida seis módulos de indicador, mais um módulo de ações onde o dado nasce no próprio portal.
- Python
- Flask
- Jinja2
- Supabase
- PostgreSQL
- +4
ERP, CRM e Field Service em uma plataforma
Empresa de fibra óptica, CFTV e infraestrutura de redes
Plataforma única que cobre o ciclo inteiro: do funil comercial à obra, da obra ao despacho do técnico, do técnico à baixa de material, com controle de acesso por cargo e trilha de auditoria.
- Next.js 16
- React 19
- TypeScript
- Tailwind CSS v4
- shadcn/ui
- +6