arcadiasuite/MAPA_GERAL_RETAIL.md

706 lines
66 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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