66 KiB
66 KiB
MAPA GERAL DO SISTEMA RETAIL - Arcádia Suite
1. VISÃO MACRO DO MÓDULO
╔══════════════════════════════════════════════════════════════════════════════════╗
║ ARCÁDIA RETAIL - MAPA GERAL ║
║ Loja de Celulares e Assistência Técnica ║
╠══════════════════════════════════════════════════════════════════════════════════╣
║ ║
║ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ║
║ │DASHBOARD│ │ PDV │ │ PESSOAS │ │ ESTOQUE │ │SERVIÇOS │ ║
║ │ (KPIs) │ │ (Caixa) │ │(Cadastro│ │(Depósito│ │ (O.S.) │ ║
║ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ ║
║ │ │ │ │ │ ║
║ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ║
║ │TRADE-IN │ │ COMPRAS │ │CADASTROS│ │RELATÓRIO│ │COMISSÕES│ ║
║ │(Aval.) │ │(Aquis.) │ │ (Config)│ │(Reports)│ │ (Metas) │ ║
║ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ ║
║ │ │ │ │ │ ║
║ └────────────┴────────────┴─────┬──────┴────────────┘ ║
║ │ ║
║ ┌─────────┴─────────┐ ║
║ │ CONFIGURAÇÃO │ ║
║ │ Plus / Empresas │ ║
║ └───────────────────┘ ║
╚══════════════════════════════════════════════════════════════════════════════════╝
2. FLUXO PRINCIPAL DE OPERAÇÕES
┌──────────────────────────────────────────────┐
│ ENTRADA DE MERCADORIA │
└──────────────────────┬───────────────────────┘
│
┌──────────────────────┬┴──────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ COMPRA │ │ TRADE-IN │ │ CONSIGNAÇÃO │
│ Fornecedor │ │ Cliente │ │ Parceiro │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ ┌──────┴───────┐ │
│ │ Avaliação │ │
│ │ 19 itens │ │
│ │ checklist │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ Aprovação │ │
│ │ Gera Crédito│ │
│ │ Cria O.S. │ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ Revisão │ │
│ │ O.S. Interna│ │
│ │ Manutenção │ │
│ └──────┬───────┘ │
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ ESTOQUE │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Depósito │ │Depósito │ │Depósito │ │
│ │ Loja │ │ Central │ │Trânsito │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └────────────┼────────────┘ │
│ │ │
│ ┌────────────────┬┴──────────────────┐ │
│ │ Dispositivos │ Produtos │ │
│ │ (por IMEI) │ (por qtd/série) │ │
│ └────────────────┴───────────────────┘ │
└────────────────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ PDV │
│ │
│ ┌────────────┐ ┌────────────┐ ┌──────────────┐ │
│ │Dispositivos│ │ Produtos │ │ Faturar O.S. │ │
│ │ (IMEI) │ │(Acessórios)│ │ (Serviços) │ │
│ └─────┬──────┘ └─────┬──────┘ └──────┬───────┘ │
│ └───────────────┼────────────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ CARRINHO │ │
│ │ │ │
│ │ Subtotal │ │
│ │ - Desconto │ │
│ │ - Trade-In │ │
│ │ - Crédito │ │
│ │ = TOTAL │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ PAGAMENTO │ │
│ │ 💵 Dinheiro │ │
│ │ 💳 Débito │ │
│ │ 💳 Crédito (Nx) │ │
│ │ 📱 PIX │ │
│ │ 🔀 Combinado │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ VENDA │ │
│ │ Impressão A4 │ │
│ │ Sync Plus │ │
│ │ NF-e/NFC-e │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────┘
│
┌────────────┼────────────────┐
▼ ▼ ▼
┌────────────┐ ┌─────────┐ ┌────────────┐
│ COMISSÃO │ │RELATÓRIO│ │ DEVOLUÇÃO │
│ Vendedor │ │Caixa │ │ Troca │
│ Metas │ │Diário │ │ Crédito │
└────────────┘ └─────────┘ └────────────┘
3. CICLO DE VIDA DO DISPOSITIVO (IMEI)
┌─────────────────────────────────────────────────────────────────────────┐
│ JORNADA DO DISPOSITIVO POR IMEI │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ENTRADA │
│ ═══════ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ COMPRA │ │ TRADE-IN │ │ CONSIGNAÇÃO │ │
│ │ Fornecedor │ │ Cliente │ │ Parceiro │ │
│ │ condition: │ │ condition: │ │ condition: │ │
│ │ new │ │ used/refurb │ │ varies │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ │ ┌──────┴───────┐ │ │
│ │ │ AVALIAÇÃO │ │ │
│ │ │ Checklist │ │ │
│ │ │ 19 itens │ │ │
│ │ └──────┬───────┘ │ │
│ │ │ │ │
│ │ ┌──────┴───────┐ │ │
│ │ │ O.S. INT. │ │ │
│ │ │ Revisão │ │ │
│ │ │ Manutenção │ │ │
│ │ └──────┬───────┘ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ ESTOQUE (status: in_stock) │ │
│ │ │ │
│ │ IMEI: 35XXXXXXXXXXXXX │ │
│ │ Marca: Samsung | Modelo: S24 Ultra │ │
│ │ Cor: Preto | Storage: 256GB | RAM: 12GB │ │
│ │ Condição: refurbished │ │
│ │ Preço Compra: R$ 2.500 | Preço Venda: R$ 3.500 │ │
│ │ Depósito: Loja Centro │ │
│ └──────────────────────┬──────────────────────────────┘ │
│ │ │
│ MOVIMENTAÇÕES │ │
│ ═══════════════ │ │
│ │ │
│ ┌──────────┐ ┌──────┴──────┐ ┌──────────────┐ │
│ │TRANSFER. │◄───│ DISPONÍVEL │───►│ ASSISTÊNCIA │ │
│ │Entre lojas│ │ para venda │ │ O.S. cliente│ │
│ │in_transit │ │ in_stock │ │ in_service │ │
│ └──────────┘ └──────┬──────┘ └──────┬───────┘ │
│ │ │ │
│ │ │ (retorna após reparo) │
│ │ └──────────┐ │
│ │ │ │
│ SAÍDA ▼ ▼ │
│ ═════ ┌──────────────┐ ┌──────────────┐ │
│ │ VENDA │ │ DE VOLTA AO │ │
│ │ PDV + NF-e │ │ ESTOQUE │ │
│ │ status:sold │ │ in_stock │ │
│ └──────┬───────┘ └──────────────┘ │
│ │ │
│ ┌──────┴───────┐ │
│ │ DEVOLUÇÃO? │ │
│ │ returned │──────────► Volta ao estoque │
│ └──────────────┘ │
│ │
│ RASTREAMENTO: device_history + imei_history (kardex completo) │
│ │
└─────────────────────────────────────────────────────────────────────────┘
4. FLUXO DO TRADE-IN (4 ETAPAS DETALHADAS)
╔═══════════════════════════════════════════════════════════════════════════╗
║ TRADE-IN - FLUXO COMPLETO ║
╠═══════════════════════════════════════════════════════════════════════════╣
║ ║
║ ETAPA 1: AVALIAÇÃO ║
║ ══════════════════ ║
║ ║
║ ┌────────────────────────────────────────────────────────────┐ ║
║ │ Cliente chega com dispositivo usado │ ║
║ │ │ ║
║ │ 1. Identificar cliente (busca por nome/CPF) │ ║
║ │ 2. Registrar IMEI, Marca, Modelo │ ║
║ │ 3. Preencher Checklist (19 itens): │ ║
║ │ │ ║
║ │ ┌──────────────────────────────────────────────────────┐ │ ║
║ │ │ ☐ Liga corretamente ☐ Sensores/NFC │ │ ║
║ │ │ ☐ Sem avarias/fantasma ☐ Face ID/Touch ID │ │ ║
║ │ │ ☐ Sem manchas na tela ☐ Microfones │ │ ║
║ │ │ ☐ Botões funcionando ☐ Áudio auricular │ │ ║
║ │ │ ☐ Marcas de uso ☐ Alto-falante │ │ ║
║ │ │ ☐ Wi-Fi ☐ Carregamento │ │ ║
║ │ │ ☐ Chip ☐ Câmeras │ │ ║
║ │ │ ☐ 4G/5G ☐ Flash │ │ ║
║ │ │ ☐ Possui carregador ☐ 3uTools OK │ │ ║
║ │ │ 🔋 Bateria: ____% │ │ ║
║ │ └──────────────────────────────────────────────────────┘ │ ║
║ │ │ ║
║ │ 4. Listar peças necessárias (se houver) │ ║
║ │ 5. Definir valor estimado │ ║
║ │ 6. Assinatura digital do cliente │ ║
║ │ 7. Imprimir comprovante │ ║
║ │ │ ║
║ │ Status: PENDING │ ║
║ └────────────────────────────────────────────┬───────────────┘ ║
║ │ ║
║ ▼ ║
║ ETAPA 2: APROVAÇÃO ║
║ ══════════════════ ║
║ ║
║ ┌────────────────────────────────────────────────────────────┐ ║
║ │ Gerente revisa avaliação e decide: │ ║
║ │ │ ║
║ │ [APROVAR] [REJEITAR] │ ║
║ │ │ │ │ ║
║ │ ▼ ▼ │ ║
║ │ Automaticamente: Avaliação │ ║
║ │ ✅ Gera CRÉDITO para cliente rejeitada. │ ║
║ │ (R$ do valor estimado) Sem ações. │ ║
║ │ ✅ Cria O.S. INTERNA │ ║
║ │ (INT2602XXXXXX) │ ║
║ │ ✅ Registra no IMEI History │ ║
║ │ │ ║
║ │ Status: APPROVED │ ║
║ └────────────────────────────────────────────┬───────────────┘ ║
║ │ ║
║ ▼ ║
║ ETAPA 3: REVISÃO / MANUTENÇÃO ║
║ ═════════════════════════════ ║
║ ║
║ ┌────────────────────────────────────────────────────────────┐ ║
║ │ Técnico trabalha na O.S. Interna: │ ║
║ │ │ ║
║ │ 1. Diagnóstico técnico │ ║
║ │ 2. Troca de peças (registra peças + custos) │ ║
║ │ 3. Limpeza e preparação │ ║
║ │ 4. Teste de qualidade │ ║
║ │ 5. Preenche checklist de conclusão │ ║
║ │ 6. Finaliza O.S. Interna │ ║
║ │ │ ║
║ │ Custos: │ ║
║ │ ├── Peças utilizadas: R$ XXX │ ║
║ │ ├── Mão de obra: R$ XXX │ ║
║ │ └── Total reparo: R$ XXX │ ║
║ │ │ ║
║ │ Status O.S.: COMPLETED │ ║
║ └────────────────────────────────────────────┬───────────────┘ ║
║ │ ║
║ ▼ ║
║ ETAPA 4: ENTRADA NO ESTOQUE ║
║ ═══════════════════════════ ║
║ ║
║ ┌────────────────────────────────────────────────────────────┐ ║
║ │ Ao finalizar O.S. Interna: │ ║
║ │ │ ║
║ │ ✅ Cria dispositivo no estoque (mobile_devices) │ ║
║ │ condition: "refurbished" │ ║
║ │ acquisitionType: "trade_in" │ ║
║ │ │ ║
║ │ 💰 Cálculo do preço sugerido: │ ║
║ │ Custo aquisição = Valor Trade-In + Custo Reparo │ ║
║ │ Preço sugerido = Custo × (1 + Margem%) │ ║
║ │ Ex: R$1500 + R$300 = R$1800 × 1.30 = R$ 2.340 │ ║
║ │ │ ║
║ │ ✅ Registra no IMEI History │ ║
║ │ ✅ Registra no Activity Feed │ ║
║ │ ✅ Disponível no PDV para venda │ ║
║ │ │ ║
║ │ Status: IN_STOCK (pronto para venda) │ ║
║ └────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════════╝
5. MAPA DO PDV (PONTO DE VENDA)
╔═══════════════════════════════════════════════════════════════════════╗
║ PDV - PONTO DE VENDA ║
╠═══════════════════════════════════════════════════════════════════════╣
║ ║
║ BARRA SUPERIOR ║
║ ┌──────────────────────────────────────────────────────────────────┐ ║
║ │ 🏪 Empresa: Loja Centro 👤 Vendedor: João Silva │ ║
║ │ │ ║
║ │ [Sangria] [Reforço] [Devolução] [Selecionar Cliente] [Limpar] │ ║
║ └──────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌───────────────────────────────────┬──────────────────────────────┐ ║
║ │ CATÁLOGO (3 colunas) │ CARRINHO (2 colunas) │ ║
║ │ │ │ ║
║ │ ┌──────────┬──────────┬────────┐ │ ┌──────────────────────────┐│ ║
║ │ │📱Disposit│📦Produtos│🔧Fat.OS│ │ │ Samsung S24 Ultra ││ ║
║ │ └──────────┴──────────┴────────┘ │ │ IMEI: 35XXX 📱Celular ││ ║
║ │ │ │ R$ 3.500,00 ││ ║
║ │ [🔍 Buscar... ] │ ├──────────────────────────┤│ ║
║ │ │ │ Capinha Silicone ││ ║
║ │ ┌──────────────────────────────┐ │ │ 2x R$ 45,00 ││ ║
║ │ │ Samsung S24 Ultra │ │ │ R$ 90,00 ││ ║
║ │ │ 256GB | Preto | IMEI: 35XX │ │ ├──────────────────────────┤│ ║
║ │ │ 🟢 Novo 📦 Loja Centro │ │ │ O.S. #OS2602ABC ││ ║
║ │ │ R$ 3.500,00 │ │ │ Troca de tela 🔧Serviço ││ ║
║ │ │ [+ Adicionar] │ │ │ R$ 450,00 ││ ║
║ │ ├──────────────────────────────┤ │ ╞══════════════════════════╡│ ║
║ │ │ iPhone 15 Pro │ │ │ Subtotal R$ 4.040,00 ││ ║
║ │ │ 128GB | Branco | IMEI: 86XX │ │ │ Desconto -R$ 40,00 ││ ║
║ │ │ 🔵 Recond 📦 Loja Centro │ │ │ Trade-In -R$ 1.500,00 ││ ║
║ │ │ R$ 4.200,00 │ │ │ Crédito -R$ 200,00 ││ ║
║ │ │ [+ Adicionar] │ │ │─────────────────────────││ ║
║ │ ├──────────────────────────────┤ │ │ TOTAL R$ 2.300,00 ││ ║
║ │ │ Xiaomi 14 │ │ │ ││ ║
║ │ │ 512GB | Azul | IMEI: 86XX │ │ │ 💙 Crédito: R$ 200,00 ││ ║
║ │ │ 🟡 Usado 📦 Loja Centro │ │ │ ││ ║
║ │ │ R$ 2.800,00 │ │ │ [↕️ Trade-In] ││ ║
║ │ │ [+ Adicionar] │ │ │ [💰 FINALIZAR VENDA] ││ ║
║ │ └──────────────────────────────┘ │ └──────────────────────────┘│ ║
║ └───────────────────────────────────┴──────────────────────────────┘ ║
║ ║
║ MODAL DE PAGAMENTO ║
║ ┌──────────────────────────────────────────────────────────────────┐ ║
║ │ Total: R$ 2.300,00 │ ║
║ │ │ ║
║ │ [Dinheiro ✓] [Débito] [Crédito] [PIX] [Combinado] │ ║
║ │ │ ║
║ │ Valor: [R$ 2.300,00] Parcelas: [1x] │ ║
║ │ │ ║
║ │ Desconto: [___]% ou [R$ ___] │ ║
║ │ │ ║
║ │ [CONFIRMAR PAGAMENTO] │ ║
║ └──────────────────────────────────────────────────────────────────┘ ║
╚═══════════════════════════════════════════════════════════════════════╝
6. FLUXO DA ORDEM DE SERVIÇO (12 ESTADOS)
┌─────────────────────────────────────────────────────────────────────────────┐
│ ORDEM DE SERVIÇO - FLUXO DE STATUS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ ABERTA │ ◄── Cliente entrega dispositivo │
│ │ open │ │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ DIAGNÓSTICO │ ◄── Técnico analisa problema │
│ │ diagnosis │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ ORÇAMENTO │ ◄── Técnico elabora orçamento │
│ │ quote │ │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ AGUARD. APROVAÇÃO │ ◄── Enviado para cliente │
│ │ pending_approval │ │
│ └─────┬────────┬─────┘ │
│ │ │ │
│ APROVOU │ │ REJEITOU │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ APROVADA │ │ REJEITADA│ ──► FIM │
│ │ approved │ │ rejected │ │
│ └────┬─────┘ └──────────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ EM REPARO│ ◄── Técnico inicia trabalho │
│ │in_repair │ │
│ └────┬─────┘ │
│ │ │
│ ┌──────────┼──────────┐ │
│ │ │ │
│ ▼ │ │
│ ┌──────────────┐ │ │
│ │ AGUARD. PEÇAS│ │ ◄── Se precisar de peça │
│ │waiting_parts │───────────────┘ │
│ └──────────────┘ (peça chegou, volta para reparo) │
│ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ QUALIDADE │ ◄── Verificação pós-reparo │
│ │quality_check │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ PRONTO PARA │ ◄── Disponível para retirada │
│ │ RETIRADA │ (aparece no PDV p/ faturar) │
│ │ ready_pickup │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ CONCLUÍDA │ ◄── Cliente retirou + pagou │
│ │ completed │ (faturada no PDV) │
│ └──────────────┘ │
│ │
│ Em qualquer momento: ──────────► ┌──────────────┐ │
│ │ CANCELADA │ │
│ │ cancelled │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
7. MAPA DE RELATÓRIOS
┌─────────────────────────────────────────────────────────────────────┐
│ RELATÓRIOS DO RETAIL │
├──────────────┬──────────────────────────────────────────────────────┤
│ │ │
│ OS POR │ Status │ Qtd │ Valor Total │
│ STATUS │ open │ 12 │ R$ 5.400 │
│ │ in_repair │ 8 │ R$ 3.200 │
│ │ completed │ 45 │ R$ 22.500 │
│ │ │
├──────────────┼──────────────────────────────────────────────────────┤
│ │ │
│ OS POR │ Técnico │ Total │ Concl. │ Andamento │ Receita │
│ TÉCNICO │ Carlos │ 15 │ 12 │ 3 │ R$8.500 │
│ │ Pedro │ 10 │ 8 │ 2 │ R$5.200 │
│ │ │
├──────────────┼──────────────────────────────────────────────────────┤
│ │ │
│ VENDAS POR │ Vendedor │ Vendas │ Receita │ Ticket │ Dias │
│ VENDEDOR │ João │ 28 │ R$45.000 │ R$1607 │ 22 │
│ │ Maria │ 22 │ R$38.000 │ R$1727 │ 20 │
│ │ │
├──────────────┼──────────────────────────────────────────────────────┤
│ │ │
│ MARGEM │ Dispositivo │ IMEI │ Custo │ Venda │ Margem │
│ POR IMEI │ S24 Ultra │ 35XXX │ R$2500 │ R$3500 │ 40.0% │
│ │ iPhone 15 │ 86XXX │ R$3800 │ R$4200 │ 10.5% │
│ │ │
├──────────────┼──────────────────────────────────────────────────────┤
│ │ │
│ CAIXA │ ┌────────────────────────────────────────────┐ │
│ DIÁRIO │ │ Total Vendas: R$ 12.500 (8 vendas) │ │
│ │ │ Dinheiro: R$ 4.200 │ Cartão: R$ 5.800 │ │
│ │ │ PIX: R$ 2.500 │ Combinado: R$ 0 │ │
│ (4 queries) │ │ Sangrias: -R$ 500 │ Reforços: +R$ 200 │ │
│ │ │ Saldo Caixa: R$ 3.900 │ │
│ │ └────────────────────────────────────────────┘ │
│ │ │
│ │ POR VENDEDOR: │
│ │ ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │
│ │ │Vendedor│Vendas│Dinh. │Déb. │Créd.│ PIX │TOTAL │ │
│ │ │João │ 5 │R$2100│R$1500│R$800│R$1200│R$5600│ │
│ │ │Maria │ 3 │R$2100│R$1300│R$600│R$1300│R$6900│ │
│ │ │TOTAL │ 8 │R$4200│R$2800│R$1400│R$2500│R$12.5│ │
│ │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │
│ │ │
├──────────────┼──────────────────────────────────────────────────────┤
│ │ │
│ GIRO DE │ Produto │ Estoque │ Vendas 30d │ Turnover │
│ ESTOQUE │ Capinha │ 50 │ 35 │ 0.70 │
│ │ Película │ 80 │ 42 │ 0.53 │
│ │ │
└──────────────┴──────────────────────────────────────────────────────┘
8. ARQUITETURA TÉCNICA
╔═══════════════════════════════════════════════════════════════════════╗
║ ARQUITETURA DO MÓDULO RETAIL ║
╠═══════════════════════════════════════════════════════════════════════╣
║ ║
║ FRONTEND (React + TypeScript + Tailwind + shadcn/ui) ║
║ ═══════════════════════════════════════════════════ ║
║ ║
║ client/src/pages/ArcadiaRetail.tsx ──── 10.067 linhas ║
║ │ ║
║ ├── Dashboard (KPIs, Feed, Alertas) ║
║ ├── PDV (Carrinho, Catálogo, Pagamento) ║
║ ├── Pessoas (CRUD, Papéis, Histórico) ║
║ ├── Estoque (Depósitos, Séries, Inventário) ║
║ ├── Serviços (O.S. CRUD, Checklist) ║
║ ├── Trade-In (Avaliações, Fluxo 4 etapas) ║
║ ├── Compras (Pedidos, Recebimento) ║
║ ├── Cadastros (Pagamento, Vendedores, Promoções) ║
║ ├── Relatórios (6 sub-abas) ║
║ ├── Comissões (Dashboard, Metas, Fechamento) ║
║ └── Configuração (Plus, Empresas, Sync) ║
║ ║
║ client/src/components/TradeInForm.tsx ─── 988 linhas ║
║ └── Formulário completo c/ checklist + assinatura ║
║ ║
║ ───────────────────────────────────────────────────────────── ║
║ API (fetch → /api/retail/*) ║
║ ───────────────────────────────────────────────────────────── ║
║ ║
║ BACKEND (Express.js + Drizzle ORM) ║
║ ══════════════════════════════════ ║
║ ║
║ server/retail/routes.ts ──── 5.218 linhas (~130 endpoints) ║
║ │ ║
║ ├── CRUD: Devices, Evaluations, ServiceOrders, ║
║ │ Persons, Products, Warehouses, etc. ║
║ ├── PDV: Sessions, Sales, Payments, CashMovements ║
║ ├── Trade-In: Approve, Process, FullFlow, Stock ║
║ ├── Reports: OsStatus, OsTech, SalesSeller, ║
║ │ MarginIMEI, DailyCash, StockTurnover ║
║ ├── Returns: Search, Process, Credits ║
║ └── Commissions: Plans, Goals, Calculate, Close ║
║ ║
║ server/retail/plus-sync.ts ──── 542 linhas ║
║ └── Sync: Customers, Sales+Items, NF-e ║
║ ║
║ ───────────────────────────────────────────────────────────── ║
║ Drizzle ORM → PostgreSQL ║
║ ───────────────────────────────────────────────────────────── ║
║ ║
║ BANCO DE DADOS (PostgreSQL + 40 tabelas) ║
║ ════════════════════════════════════════ ║
║ ║
║ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ║
║ │ Dispositivos │ │ Vendas │ │ Estoque │ ║
║ │ mobile_devices│ │ pos_sales │ │ warehouses │ ║
║ │ device_history│ │pos_sale_items│ │warehouse_stk │ ║
║ │ imei_history │ │pos_sessions │ │stock_movem. │ ║
║ └──────────────┘ │cash_movements│ │transfers │ ║
║ └──────────────┘ │serials │ ║
║ ┌──────────────┐ │inventories │ ║
║ │ Trade-In │ ┌──────────────┐ └──────────────┘ ║
║ │ evaluations │ │ Serviços │ ║
║ │ checklist_* │ │service_orders│ ┌──────────────┐ ║
║ │ acquisitions │ │ so_items │ │ Cadastros │ ║
║ │ transfer_doc │ │ warranties │ │payment_meth. │ ║
║ └──────────────┘ └──────────────┘ │ sellers │ ║
║ │ comm_plans │ ║
║ ┌──────────────┐ ┌──────────────┐ │ promotions │ ║
║ │ Créditos │ │ Devoluções │ │ price_tables │ ║
║ │customer_cred.│ │return_exch. │ │product_types │ ║
║ └──────────────┘ │return_items │ └──────────────┘ ║
║ └──────────────┘ ║
║ ║
║ ───────────────────────────────────────────────────────────── ║
║ ║
║ INTEGRAÇÃO PLUS (Laravel ERP - Porta 8080) ║
║ ══════════════════════════════════════════ ║
║ ║
║ ┌───────────┐ ┌───────────┐ ┌───────────┐ ║
║ │Proxy Rev. │ │ SSO │ │Auto-Start │ ║
║ │/plus/* → │ │HMAC-SHA256│ │php artisan│ ║
║ │:8080 │ │Token │ │serve │ ║
║ └───────────┘ └───────────┘ └───────────┘ ║
║ │ ║
║ ▼ ║
║ ┌─────────────────────────────────────────────────┐ ║
║ │ Plus (Laravel) │ ║
║ │ ├── NF-e / NFC-e (SEFAZ) │ ║
║ │ ├── Clientes / Fornecedores │ ║
║ │ ├── Vendas / Faturamento │ ║
║ │ └── Fiscal completo │ ║
║ └─────────────────────────────────────────────────┘ ║
║ ║
╚═══════════════════════════════════════════════════════════════════════╝
9. SEGURANÇA MULTI-TENANT
┌─────────────────────────────────────────────────────────────────────┐
│ CAMADAS DE SEGURANÇA │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ CAMADA 1: AUTENTICAÇÃO │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Passport.js Session → req.isAuthenticated() │ │
│ │ Todas as rotas /api/retail/* exigem login │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ CAMADA 2: TENANT SCOPING │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ req.user.tenantId → obrigatório │ │
│ │ Se ausente → 403 "Tenant not identified" │ │
│ │ WHERE tenant_id = $tenantId em TODAS as queries │ │
│ │ Dados de um tenant NUNCA vazam para outro │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ CAMADA 3: MODULE GATING │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ requireModule('retail') → verifica tenants.features.retail │ │
│ │ Se módulo inativo → 403 "Módulo não habilitado" │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ CAMADA 4: OPERAÇÕES SENSÍVEIS │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Devoluções → Exige senha do GERENTE │ │
│ │ Sangrias → Registra responsável + autorizador │ │
│ │ Exclusões → Soft delete quando possível │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ CAMADA 5: AUDITORIA │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ retail_activity_feed → Todas as operações relevantes │ │
│ │ device_history → Movimentação de IMEI │ │
│ │ imei_history → Kardex completo por IMEI │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
10. MAPA DE INTEGRAÇÕES
┌─────────────────────────────────────────────────────────────────────┐
│ INTEGRAÇÕES DO RETAIL │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ │
│ │ ARCÁDIA RETAIL │ │
│ │ (Express) │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌───────────────────┼───────────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ PLUS (PHP) │ │ ERPNEXT │ │ POSTGRESQL │ │
│ │ :8080 │ │ (API ext.) │ │ (Drizzle) │ │
│ │ │ │ │ │ │ │
│ │ ▸ NF-e/NFC-e│ │ ▸ Clientes │ │ ▸ 40+ tabelas│ │
│ │ ▸ Clientes │ │ ▸ Fornecedor │ │ ▸ Retail │ │
│ │ ▸ Vendas │ │ ▸ Estoque │ │ ▸ Multi-ten. │ │
│ │ ▸ Fiscal │ │ ▸ Financeiro │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ SEFAZ │ │
│ │ NF-e / NFC-e (via Plus Laravel + nfelib) │ │
│ └──────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
Métricas Finais:
- 16.800+ linhas de código
- 40+ tabelas no banco
- ~130 endpoints REST
- 11 abas na interface
- 19 itens no checklist de avaliação
- 12 estados de O.S.
- 4 etapas no fluxo de Trade-In
- 5 formas de pagamento
- 4 queries no caixa diário