intermediate
ordens-servico
parts-catalog
labor

Rastreamento de Pecas e Mao de Obra

Lance pecas e mao de obra contra tasks, sume em custo lifetime por veiculo e alimente seu P&L mensal

Equipe Levy FleetsMay 18, 20266 min read

Rastreamento de Pecas e Mao de Obra

Saber quanto cada ordem de servico custa e a diferenca entre uma frota que cresce lucrativa e uma que sangra margem em um buraco negro. O Levy Service rastreia consumo de pecas e minutos de mao de obra em cada task e sume em custo lifetime por veiculo e linhas de P&L mensal por frota.

O parts catalog

Gerencie o catalogo em /dashboard/parts-catalog. Cada linha em parts_catalog tem:

  • SKU (seu codigo interno)
  • Name (rotulo legivel)
  • Unit cost (em centavos, snapshot no momento do cadastro)
  • Vehicle models (em quais modelos essa peca cabe, por exemplo ["es400a", "es400b"])
  • Stock on hand (quantidade no seu deposito)
  • Reorder threshold (alerta quando o estoque cai abaixo)

Linhas do catalogo podem ser globais (lista de pecas OKAI/Segway padrao mantida pela Levy) ou por subaccount (suas pecas proprias de fornecedor). Linhas globais tem subaccount_id = NULL e sao visiveis a toda frota. Voce pode sobrescrever uma SKU global criando uma linha por subaccount com a mesma SKU.

Lancando pecas contra uma task

Da tela de detalhe da task no operator-app, o tecnico abre Parts e:

  1. Busca a SKU no catalogo
  2. Define a quantidade usada
  3. Toca em Add

Isso escreve uma linha task_parts com unit_cost_cents em snapshot do catalogo no momento do uso. O snapshot importa: se o preco do catalogo mudar no mes que vem, o registro historico continua correto.

task_parts.used_by registra qual tecnico consumiu a peca, e stock_on_hand em parts_catalog cai automaticamente. Quando o estoque cai abaixo de reorder_threshold, o ops_manager recebe uma notificacao no Slack (se configurado).

Lancando mao de obra

Mao de obra entra por task_labor:

  • Minutes - tempo gasto nesta task
  • Hourly rate - default vem de team_members.hourly_rate_cents, sobrescrevivel por task
  • Total cost - calculado como (minutes / 60) * hourly_rate_cents

O operator-app captura minutos de mao de obra automaticamente: o relogio comeca no start e para no resolve. O tecnico pode editar os minutos antes de resolver caso o auto-captado esteja errado (por exemplo, ele deixou a task aberta durante o almoco).

Soma de custo por task

tasks.total_cost_cents e a soma de cada task_parts.quantity * task_parts.unit_cost_cents mais cada task_labor.total_cost_cents da task. A coluna e mantida em sincronia por um trigger de banco que dispara em insert/update/delete de task_parts e task_labor.

Isso aparece no side drawer do dashboard como a linha Total Cost e some na analitica por veiculo e por frota.

Custo lifetime por veiculo

A pagina de detalhe do veiculo em /dashboard/vehicles/[id] traz um card Lifetime Maintenance Cost que soma total_cost_cents de cada task fechada contra o veiculo. O breakdown mostra:

  • Split de parts vs labor
  • Top 5 task types por gasto
  • Tasks por trimestre (tendencia)
  • Custo por corrida (custo lifetime / corridas lifetime)

Esses sao os dados que voce usa para decidir quando aposentar um veiculo. Se custo por corrida sobe acima do seu limite de ROI de substituicao, e hora.

Linha de P&L por toda a frota

A pagina de analytics em /dashboard/tasks/analytics traz um heatmap Cost per Vehicle e um grafico Monthly Maintenance P&L. O grafico e uma barra empilhada que mostra parts cost, custo interno de labor e custo de vendor invoices por mes. Esse e o slide que vai no seu update mensal de investidor.

Nos bastidores, o endpoint de analytics le da materialized view technician_performance (atualizada todas as noites por /api/cron/refresh-tech-performance) mais uma soma direta sobre tasks.total_cost_cents.

Vendor invoices

Se uma task for terceirizada a um vendor pelo portal magic-link, o vendor sobe uma fatura por POST /api/vendor/[token]/tasks/[id]/invoice. Isso cria uma linha em task_vendor_invoices e uma Stripe Invoice (se STRIPE_SECRET_KEY estiver configurado). O custo do vendor entra em tasks.total_cost_cents igual a parts e labor internas.

Veja Vendor Dispatch para o fluxo completo.

Alertas de reorder e gestao de estoque

O alerta de reorder e o unico lugar onde automatizamos decisoes de estoque. O Levy Service ainda nao gera pedidos de compra nem se integra ao sistema do seu fornecedor - isso e item da Fase 5. Por enquanto o workflow e:

  1. Estoque cai abaixo de reorder_threshold
  2. Alerta no Slack dispara para o ops_manager
  3. Ops manager coloca o pedido com o fornecedor
  4. Quando o estoque chega, o ops manager atualiza stock_on_hand pela pagina do parts catalog

Retencao de dados

Linhas de parts e labor sao mantidas indefinidamente - sao registros financeiros e alimentam a visao de custo lifetime. Nao apague. Se voce errou ao lancar uma peca, edite a quantity para zero em vez de deletar.

O que boas frotas medem

As frotas com operacao de manutencao lucrativa tem tres coisas em comum: um catalogo limpo com 30 a 50 SKUs (nao 300), tecnicos que lancam mao de obra em toda task (sem excecoes) e revisao mensal do heatmap de cost-per-vehicle para identificar os limoes.