DESAFIO FULLSTACK INTERMEDIÁRIO

O . S . P R O

Gestor de Ordens de Serviço: Transforme pedidos informais em processos auditáveis, profissionais e rentáveis.

Explorar Desafio

📌 O Problema Real

Pequenas assistências técnicas e prestadores de serviço perdem dinheiro por falta de controle. Aparelhos esquecidos, orçamentos ignorados e falta de visibilidade sobre o lucro líquido matam o negócio.

💡 A Solução

Você desenvolverá o O.S. Pro, um sistema de gestão de fluxo de trabalho baseado em uma máquina de estados industrial:

1. Entrada

Registro do cliente e objeto do serviço.

2. Orçamento

Definição de peças, mão de obra e prazos.

3. Execução & Entrega

Aprovação do cliente e formalização do serviço.

🟡 Requisitos Técnicos

1. Modelagem de Dados Relacional (SQLite)

Nesse nível, a integridade referencial via FOREIGN KEYS é obrigatória para sustentar o fluxo de trabalho.

-- 1. Clientes
CREATE TABLE clientes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome TEXT NOT NULL,
    whatsapp TEXT NOT NULL
);

-- 2. Catálogo de Serviços/Produtos
CREATE TABLE servicos_produtos (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    descricao TEXT NOT NULL,
    preco_base DECIMAL(10,2) NOT NULL
);

-- 3. Cabeçalho da Ordem de Serviço
CREATE TABLE ordens_servico (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    cliente_id INTEGER NOT NULL,
    status TEXT CHECK(status IN ('Aberto', 'Orçamento', 'Aprovado', 'Concluído', 'Cancelado')) DEFAULT 'Aberto',
    data_entrada DATETIME DEFAULT CURRENT_TIMESTAMP,
    data_saida DATETIME,
    observacoes TEXT,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);

-- 4. Itens da O.S. (Histórico de preços)
CREATE TABLE itens_os (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    os_id INTEGER NOT NULL,
    servico_id INTEGER NOT NULL,
    quantidade INTEGER DEFAULT 1,
    valor_unitario_aplicado DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (os_id) REFERENCES ordens_servico(id) ON DELETE CASCADE,
    FOREIGN KEY (servico_id) REFERENCES servicos_produtos(id)
);
Cálculo Automático

O valor total da O.S. deve ser a soma dinâmica de todos os itens vinculados a ela.

Integridade de Fluxo

Uma O.S. só pode avançar para "Concluído" se já tiver passado pelo estado "Aprovado".

Histórico de Preços

O valor unitário deve ser gravado no ato da venda para não alterar ordens antigas se o catálogo subir de preço.

2. Relatório Financeiro (SQL Avançado)

Implemente uma consulta para o painel administrativo que retorne o faturamento total agrupado por mês:

SELECT 
    strftime('%m/%Y', os.data_entrada) AS Mes,
    SUM(it.quantidade * it.valor_unitario_aplicado) AS Faturamento_Total
FROM ordens_servico os
JOIN itens_os it ON os.id = it.os_id
WHERE os.status = 'Concluído'
GROUP BY strftime('%m/%Y', os.data_entrada);

🎯 Funcionalidades MVP

  • Dashboard Estratégico: Cards com "O.S. em Aberto", "Aguardando Aprovação" e faturamento mensal.
  • Gestão de O.S.: Fluxo de seleção de cliente e adição múltipla de serviços.
  • Máquina de Estados: Botões de ação para avançar o status conforme o processo avança.
  • Exportação Recibo: HTML limpo (print-friendly) para envio via WhatsApp como comprovante.

💰 Potencial de Renda

Aplicações

Assistências de TI, celulares, oficinas de bikes e eletricistas.

Modelo SaaS

Cobrança recorrente para manter o controle da empresa na nuvem ou local.

Valores sugeridos (variam conforme região e escopo)

Setup: R$ 800 - R$ 1.200

Assinatura: ~ R$ 49,90/mês

📦 Como Enviar (Padrão HDEV)

🎬 Vídeo Tutorial