482 lines
22 KiB
Markdown
482 lines
22 KiB
Markdown
# Plano de Implementação - Módulo Retail (Loja de Celular e Assistência Técnica)
|
|
|
|
**Versão:** 1.1
|
|
**Data:** Janeiro 2026
|
|
**Status:** Em Desenvolvimento
|
|
|
|
---
|
|
|
|
## 0. Requisitos Especiais Identificados
|
|
|
|
### 0.1 Fluxo Trade-In → O.S. Interna → Estoque
|
|
|
|
Quando um aparelho Trade-In é aprovado para aquisição, deve:
|
|
1. Criar automaticamente uma **Ordem de Serviço Interna** para revisão/manutenção
|
|
2. Ao finalizar a O.S., o aparelho entra no **estoque como produto normal**
|
|
3. O estoque deve **diferenciar a origem**: Trade-In vs Fornecedor
|
|
|
|
```
|
|
┌─────────────────┐ ┌───────────────────┐ ┌─────────────────┐
|
|
│ TRADE-IN │ │ O.S. INTERNA │ │ ESTOQUE │
|
|
│ (Avaliação) │ ──→ │ (Revisão) │ ──→ │ (Disponível) │
|
|
└─────────────────┘ └───────────────────┘ └─────────────────┘
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
• Checklist OK • Limpeza • Origem: Trade-In
|
|
• Valor acordado • Teste funcional • Custo: valor + OS
|
|
• Assinatura • Troca peças? • Preço venda
|
|
• Documento legal • Laudo técnico • IMEI rastreado
|
|
```
|
|
|
|
### 0.2 Cadastro Unificado de Pessoas
|
|
|
|
Uma única tabela de **Pessoas** com múltiplos papéis:
|
|
- Cliente
|
|
- Fornecedor
|
|
- Colaborador/Funcionário
|
|
- Técnico
|
|
- Representante
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ PESSOA (person) │
|
|
│ • id, nome, cpf_cnpj, email, telefone, endereço │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────────┼───────────────┐
|
|
▼ ▼ ▼
|
|
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
│ CLIENTE │ │FORNECEDOR│ │COLABORADOR│
|
|
│ (role) │ │ (role) │ │ (role) │
|
|
└──────────┘ └──────────┘ └──────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 1. Análise do Estado Atual
|
|
|
|
### 1.1 O Que Já Temos Implementado
|
|
|
|
| Módulo | Funcionalidade | Status | Observações |
|
|
|--------|----------------|--------|-------------|
|
|
| **Estrutura Base** | Schema de tabelas (mobile_devices, device_evaluations, service_orders, pos_sales, stock_transfers) | ✅ Completo | Alinhado com requisitos |
|
|
| **Lojas/Filiais** | CRUD de lojas (retail_stores) e armazéns (retail_warehouses) | ✅ Completo | Suporte multi-loja |
|
|
| **Dispositivos/IMEI** | Cadastro, busca por IMEI, listagem | ✅ Básico | Falta histórico (Kardex) |
|
|
| **Trade-In** | Avaliação com checklist customizável, termo de transferência, assinatura digital | ✅ Completo | Documento imprimível |
|
|
| **Ordens de Serviço** | CRUD básico, itens da OS | ✅ Parcial | Falta fluxo completo de status |
|
|
| **PDV** | Sessões, vendas básicas, itens | ✅ Parcial | Falta carrinho funcional no frontend |
|
|
| **Transferências** | Estrutura para transferência entre lojas | ✅ Parcial | Falta workflow completo |
|
|
| **Dashboard** | Estatísticas básicas | ✅ Básico | Pode ser expandido |
|
|
|
|
### 1.2 O Que Está Faltando (Gap Analysis)
|
|
|
|
| Requisito (Documento) | Status | Prioridade | Esforço |
|
|
|-----------------------|--------|------------|---------|
|
|
| Histórico completo de IMEI (Kardex) | ❌ Não implementado | Alta | Médio |
|
|
| Geração de etiquetas com código de barras | ❌ Não implementado | Alta | Baixo |
|
|
| Fluxo completo de status da O.S. | ⚠️ Parcial | Alta | Médio |
|
|
| Orçamentação automática | ❌ Não implementado | Alta | Médio |
|
|
| Notificação ao cliente (WhatsApp/SMS) | ⚠️ Integração existe | Média | Baixo |
|
|
| Portal público de consulta O.S. | ❌ Não implementado | Média | Baixo |
|
|
| PDV com carrinho funcional | ⚠️ Parcial | Alta | Alto |
|
|
| Validação IMEI na venda | ❌ Não implementado | Alta | Baixo |
|
|
| Baixa automática de peças | ❌ Não implementado | Alta | Médio |
|
|
| Separação estoque venda/reparo | ⚠️ Via warehouses | Média | Baixo |
|
|
| Impressão de recibos/comprovantes | ❌ Não implementado | Média | Médio |
|
|
| Relatórios específicos | ⚠️ Parcial (BI existe) | Média | Médio |
|
|
|
|
---
|
|
|
|
## 2. Arquitetura de Integração
|
|
|
|
### 2.1 Reutilização de Módulos Existentes
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ ARCÁDIA SUITE (Base) │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ ✅ Clientes (customers) → Usar cadastro existente │
|
|
│ ✅ Produtos (products) → Usar cadastro existente │
|
|
│ ✅ Fornecedores (suppliers) → Usar cadastro existente │
|
|
│ ✅ Usuários/Funcionários (users) → Usar sistema de auth │
|
|
│ ✅ WhatsApp (Baileys) → Integrar notificações │
|
|
│ ✅ ERPNext → Sincronizar dados quando conectado │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ MÓDULO RETAIL (Novo) │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ 📱 Dispositivos (mobile_devices) → Controle por IMEI │
|
|
│ 🔧 Ordens de Serviço (service_orders) → Assistência Técnica │
|
|
│ 💰 PDV (pos_sales) → Ponto de Venda │
|
|
│ 📦 Estoque Retail (via warehouses) → Peças e Aparelhos │
|
|
│ 🔄 Trade-In (device_evaluations) → Avaliação de usados │
|
|
│ 🏪 Multi-Loja (retail_stores) → Franquias │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 2.2 Fluxo de Status da O.S. (Implementar)
|
|
|
|
```
|
|
┌──────────┐ ┌────────────┐ ┌───────────┐ ┌────────────────────┐
|
|
│ ABERTA │ → │ DIAGNÓSTICO│ → │ ORÇAMENTO │ → │ AGUARDANDO_APROVAÇÃO│
|
|
└──────────┘ └────────────┘ └───────────┘ └────────────────────┘
|
|
│
|
|
┌───────────────────────────────────────┴────┐
|
|
▼ ▼
|
|
┌────────────┐ ┌────────────┐
|
|
│ RECUSADA │ │ APROVADA │
|
|
└────────────┘ └────────────┘
|
|
│
|
|
┌─────────────────────────────────────────┘
|
|
▼
|
|
┌─────────────────┐ ┌───────────┐ ┌──────────┐
|
|
│ AGUARDANDO_PECA │ ← │ EM_REPARO │ → │ QUALIDADE │
|
|
└─────────────────┘ └───────────┘ └──────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────┐
|
|
│ AGUARDANDO_RETIRADA │
|
|
└─────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────┐
|
|
│ FINALIZADA │
|
|
└─────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Plano de Implementação por Fases
|
|
|
|
### Fase 0: Estrutura Base - Pessoas e Trade-In Flow (Semana 0-1) ⭐ PRIORIDADE
|
|
|
|
#### 0.1 Cadastro Unificado de Pessoas
|
|
- [ ] Criar tabela `persons` com campos base (nome, cpf_cnpj, email, telefone, endereço)
|
|
- [ ] Criar tabela `person_roles` (person_id, role_type, dados específicos do papel)
|
|
- [ ] Tipos de papel: `customer`, `supplier`, `employee`, `technician`, `partner`
|
|
- [ ] API CRUD `/persons` com filtro por papel
|
|
- [ ] Migrar referências de customers/suppliers para usar persons
|
|
- [ ] UI unificada de cadastro de pessoas com seleção de papéis
|
|
|
|
#### 0.2 Fluxo Trade-In → O.S. Interna → Estoque
|
|
- [ ] Adicionar campo `origin_type` em mobile_devices (trade_in, supplier, internal)
|
|
- [ ] Adicionar campo `is_internal` em service_orders para diferenciar OS cliente vs interna
|
|
- [ ] Criar trigger automático: ao aprovar Trade-In → criar O.S. Interna
|
|
- [ ] O.S. Interna com tipo: revisão, limpeza, manutenção preventiva
|
|
- [ ] Ao finalizar O.S. Interna → criar dispositivo no estoque
|
|
- [ ] Calcular custo total: valor_trade_in + custo_os
|
|
- [ ] Sugerir preço de venda baseado em margem configurável
|
|
- [ ] UI de acompanhamento do fluxo Trade-In completo
|
|
|
|
#### 0.3 Diferenciação de Estoque por Origem
|
|
- [ ] Campo `acquisition_type` em mobile_devices: trade_in, purchase, consignment
|
|
- [ ] Campo `acquisition_cost` (custo de aquisição)
|
|
- [ ] Campo `related_evaluation_id` (link com avaliação Trade-In)
|
|
- [ ] Campo `related_service_order_id` (link com O.S. de revisão)
|
|
- [ ] Filtros no estoque por origem
|
|
- [ ] Relatório de margem por origem
|
|
|
|
### Fase 1: Completar o Núcleo (Semana 2-3)
|
|
|
|
#### 1.1 Histórico de IMEI (Kardex)
|
|
- [ ] Criar tabela `imei_history` no schema
|
|
- [ ] API para registrar movimentações automáticas
|
|
- [ ] Endpoint GET `/devices/:imei/history`
|
|
- [ ] UI de visualização do histórico do dispositivo
|
|
|
|
#### 1.2 Fluxo Completo de O.S.
|
|
- [ ] Atualizar enum de status conforme fluxograma
|
|
- [ ] API PATCH `/service-orders/:id/status` com validação de transições
|
|
- [ ] Registrar automaticamente em `imei_history`
|
|
- [ ] UI com workflow visual de status
|
|
- [ ] Diferenciar O.S. Cliente vs O.S. Interna na listagem
|
|
|
|
#### 1.3 Orçamentação
|
|
- [ ] API POST `/service-orders/:id/generate-quote`
|
|
- [ ] Cálculo automático baseado em itens adicionados
|
|
- [ ] UI para adicionar peças/serviços e visualizar orçamento
|
|
- [ ] Impressão de orçamento
|
|
|
|
#### 1.4 Geração de Etiquetas
|
|
- [ ] API GET `/devices/:imei/label` retornando PDF
|
|
- [ ] Incluir código de barras (IMEI + número OS)
|
|
- [ ] Botão de impressão na tela de dispositivo/OS
|
|
|
|
### Fase 2: PDV Funcional (Semana 3-4)
|
|
|
|
#### 2.1 Carrinho de Vendas
|
|
- [ ] Componente de carrinho no frontend
|
|
- [ ] Busca de produtos por código/nome
|
|
- [ ] Leitura de IMEI para aparelhos
|
|
- [ ] Validação de IMEI disponível para venda
|
|
|
|
#### 2.2 Integração Venda + O.S.
|
|
- [ ] Adicionar O.S. finalizada como item da venda
|
|
- [ ] Baixa automática de peças no fechamento da OS
|
|
|
|
#### 2.3 Formas de Pagamento
|
|
- [ ] UI para múltiplas formas de pagamento
|
|
- [ ] Cálculo de troco
|
|
- [ ] Integração Trade-In como forma de pagamento
|
|
|
|
#### 2.4 Recibos e Comprovantes
|
|
- [ ] Geração de recibo de venda (impressão)
|
|
- [ ] Comprovante de entrega de OS
|
|
|
|
### Fase 3: Automação e Comunicação (Semana 5-6)
|
|
|
|
#### 3.1 Notificações ao Cliente
|
|
- [ ] Integrar com WhatsApp existente (Baileys)
|
|
- [ ] Templates de mensagem: orçamento pronto, OS pronta, lembrete
|
|
- [ ] API POST `/service-orders/:id/notify-customer`
|
|
- [ ] Histórico de notificações enviadas
|
|
|
|
#### 3.2 Portal do Cliente (Público)
|
|
- [ ] Rota pública GET `/public/os/:orderNumber`
|
|
- [ ] Página simples de consulta de status
|
|
- [ ] QR Code na etiqueta/recibo
|
|
|
|
#### 3.3 Relatórios Específicos
|
|
- [ ] OS por período/técnico/status
|
|
- [ ] Vendas por vendedor/produto/período
|
|
- [ ] Tempo médio de reparo
|
|
- [ ] Peças mais utilizadas
|
|
|
|
### Fase 4: Estoque Avançado (Semana 7-8)
|
|
|
|
#### 4.1 Separação Estoque Venda/Reparo
|
|
- [ ] Categorização de warehouses (tipo: venda/reparo)
|
|
- [ ] Regras de transferência entre tipos
|
|
- [ ] Alertas de estoque mínimo por categoria
|
|
|
|
#### 4.2 Baixa Automática de Peças
|
|
- [ ] Trigger ao finalizar reparo
|
|
- [ ] Reserva de peças ao aprovar OS
|
|
- [ ] Liberação se OS cancelada
|
|
|
|
#### 4.3 Inventário por IMEI
|
|
- [ ] Listagem de aparelhos em estoque por IMEI
|
|
- [ ] Localização física (prateleira/loja)
|
|
- [ ] Tempo em estoque
|
|
|
|
---
|
|
|
|
## 4. APIs a Implementar
|
|
|
|
### 4.0 Módulo Pessoas (Prioridade Máxima) ⭐
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| GET | `/persons` | Listar pessoas (filtro por papel) | ❌ Fazer |
|
|
| POST | `/persons` | Criar pessoa | ❌ Fazer |
|
|
| GET | `/persons/:id` | Detalhes da pessoa | ❌ Fazer |
|
|
| PUT | `/persons/:id` | Atualizar pessoa | ❌ Fazer |
|
|
| POST | `/persons/:id/roles` | Adicionar papel à pessoa | ❌ Fazer |
|
|
| DELETE | `/persons/:id/roles/:role` | Remover papel | ❌ Fazer |
|
|
| GET | `/persons/search?q=` | Buscar por nome/CPF | ❌ Fazer |
|
|
|
|
### 4.1 Módulo Trade-In Flow (Prioridade Máxima) ⭐
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| POST | `/evaluations/:id/approve-and-process` | Aprovar e criar O.S. Interna | ❌ Fazer |
|
|
| GET | `/evaluations/:id/full-flow` | Status completo do fluxo | ❌ Fazer |
|
|
| POST | `/service-orders/:id/finalize-internal` | Finalizar OS e criar no estoque | ❌ Fazer |
|
|
|
|
### 4.2 Módulo IMEI (Prioridade Alta)
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| GET | `/devices/:imei/history` | Histórico completo (Kardex) | ❌ Fazer |
|
|
| GET | `/devices/:imei/label` | Gerar etiqueta PDF | ❌ Fazer |
|
|
| PATCH | `/devices/:id/status` | Atualizar status c/ registro | ❌ Fazer |
|
|
| GET | `/devices?origin=trade_in` | Filtrar por origem | ❌ Fazer |
|
|
|
|
### 4.3 Módulo O.S. (Prioridade Alta)
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| POST | `/service-orders/:id/generate-quote` | Gerar orçamento | ❌ Fazer |
|
|
| PATCH | `/service-orders/:id/status` | Workflow de status | ⚠️ Melhorar |
|
|
| POST | `/service-orders/:id/notify-customer` | Enviar notificação | ❌ Fazer |
|
|
| GET | `/public/os/:orderNumber` | Consulta pública | ❌ Fazer |
|
|
| GET | `/service-orders?is_internal=true` | Filtrar OS internas | ❌ Fazer |
|
|
|
|
### 4.4 Módulo Vendas (Prioridade Alta)
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| POST | `/sales/validate-imei` | Validar IMEI para venda | ❌ Fazer |
|
|
| GET | `/sales/:id/receipt` | Gerar recibo PDF | ❌ Fazer |
|
|
|
|
### 4.5 Módulo Estoque (Prioridade Média)
|
|
|
|
| Método | Endpoint | Descrição | Status |
|
|
|--------|----------|-----------|--------|
|
|
| POST | `/inventory/:id/decrease` | Baixar do estoque | ❌ Fazer |
|
|
| GET | `/inventory/low-stock` | Itens abaixo do mínimo | ❌ Fazer |
|
|
| GET | `/inventory/by-origin` | Relatório por origem | ❌ Fazer |
|
|
|
|
---
|
|
|
|
## 5. Componentes de UI a Criar/Melhorar
|
|
|
|
### 5.0 Componentes Novos - Fase 0 ⭐
|
|
|
|
| Componente | Descrição | Prioridade |
|
|
|------------|-----------|------------|
|
|
| `PersonForm` | Cadastro unificado de pessoas com seleção de papéis | Máxima |
|
|
| `PersonSearch` | Busca de pessoas por nome/CPF com indicador de papéis | Máxima |
|
|
| `TradeInFlowTracker` | Acompanhamento visual: Avaliação → O.S. → Estoque | Máxima |
|
|
| `InternalServiceOrder` | Formulário de O.S. interna (revisão/manutenção) | Máxima |
|
|
| `DeviceOriginBadge` | Badge indicando origem (Trade-In / Fornecedor) | Alta |
|
|
|
|
### 5.1 Novos Componentes - Outras Fases
|
|
|
|
| Componente | Descrição | Prioridade |
|
|
|------------|-----------|------------|
|
|
| `IMEIHistory` | Timeline de movimentações do IMEI | Alta |
|
|
| `ServiceOrderWorkflow` | Painel visual de status da OS | Alta |
|
|
| `QuoteGenerator` | Formulário de orçamentação | Alta |
|
|
| `POSCart` | Carrinho do PDV funcional | Alta |
|
|
| `PaymentMethods` | Seletor de formas de pagamento | Alta |
|
|
| `ReceiptPreview` | Visualização/impressão de recibos | Média |
|
|
| `LabelPrint` | Impressão de etiquetas | Média |
|
|
| `CustomerPortal` | Página pública de consulta | Média |
|
|
| `NotificationHistory` | Histórico de mensagens enviadas | Baixa |
|
|
|
|
### 5.2 Melhorias em Componentes Existentes
|
|
|
|
| Componente | Melhoria | Prioridade |
|
|
|------------|----------|------------|
|
|
| `ArcadiaRetail.tsx` | Adicionar carrinho no PDV | Alta |
|
|
| Aba Estoque | Filtrar por origem (Trade-In/Fornecedor) | Alta |
|
|
| Aba Estoque | Separar por tipo (venda/reparo) | Média |
|
|
| Aba Serviços | Workflow visual de status | Alta |
|
|
| Aba Serviços | Diferenciar O.S. Cliente vs O.S. Interna | Alta |
|
|
| Aba Trade-In | Botão "Aprovar e Processar" com fluxo completo | Alta |
|
|
| Dashboard | KPIs específicos do negócio | Média |
|
|
|
|
---
|
|
|
|
## 6. Estimativa de Esforço
|
|
|
|
| Fase | Duração | Complexidade | Dependências |
|
|
|------|---------|--------------|--------------|
|
|
| **Fase 0 - Pessoas + Trade-In Flow** | 1-2 semanas | Alta | Nenhuma |
|
|
| Fase 1 - Núcleo (IMEI, OS, Orçamento) | 2 semanas | Média | Fase 0 |
|
|
| Fase 2 - PDV | 2 semanas | Alta | Fase 1 |
|
|
| Fase 3 - Automação | 2 semanas | Média | Fase 1, WhatsApp |
|
|
| Fase 4 - Estoque Avançado | 2 semanas | Média | Fases 1-2 |
|
|
|
|
**Total Estimado:** 8-10 semanas para MVP completo
|
|
|
|
---
|
|
|
|
## 7. Schema de Dados - Novas Tabelas
|
|
|
|
### 7.1 Tabela `persons` (Pessoas Unificadas)
|
|
|
|
```sql
|
|
CREATE TABLE persons (
|
|
id SERIAL PRIMARY KEY,
|
|
tenant_id INTEGER REFERENCES tenants(id),
|
|
full_name VARCHAR(255) NOT NULL,
|
|
cpf_cnpj VARCHAR(20) UNIQUE,
|
|
email VARCHAR(255),
|
|
phone VARCHAR(20),
|
|
phone2 VARCHAR(20),
|
|
address TEXT,
|
|
city VARCHAR(100),
|
|
state VARCHAR(2),
|
|
zip_code VARCHAR(10),
|
|
birth_date DATE,
|
|
notes TEXT,
|
|
is_active BOOLEAN DEFAULT true,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
```
|
|
|
|
### 7.2 Tabela `person_roles` (Papéis da Pessoa)
|
|
|
|
```sql
|
|
CREATE TABLE person_roles (
|
|
id SERIAL PRIMARY KEY,
|
|
person_id INTEGER REFERENCES persons(id) NOT NULL,
|
|
role_type VARCHAR(20) NOT NULL, -- customer, supplier, employee, technician, partner
|
|
-- Campos específicos por papel
|
|
credit_limit NUMERIC(12,2), -- para customer
|
|
payment_terms VARCHAR(50), -- para supplier
|
|
employee_code VARCHAR(20), -- para employee
|
|
commission_rate NUMERIC(5,2), -- para employee/technician
|
|
hire_date DATE, -- para employee
|
|
specialization VARCHAR(100), -- para technician
|
|
is_active BOOLEAN DEFAULT true,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
```
|
|
|
|
### 7.3 Campos Adicionais em `mobile_devices`
|
|
|
|
```sql
|
|
ALTER TABLE mobile_devices ADD COLUMN acquisition_type VARCHAR(20) DEFAULT 'purchase';
|
|
-- Valores: trade_in, purchase, consignment, internal_transfer
|
|
ALTER TABLE mobile_devices ADD COLUMN acquisition_cost NUMERIC(12,2);
|
|
ALTER TABLE mobile_devices ADD COLUMN related_evaluation_id INTEGER REFERENCES device_evaluations(id);
|
|
ALTER TABLE mobile_devices ADD COLUMN related_service_order_id INTEGER REFERENCES service_orders(id);
|
|
ALTER TABLE mobile_devices ADD COLUMN person_id INTEGER REFERENCES persons(id); -- substituir supplier_id
|
|
```
|
|
|
|
### 7.4 Campos Adicionais em `service_orders`
|
|
|
|
```sql
|
|
ALTER TABLE service_orders ADD COLUMN is_internal BOOLEAN DEFAULT false;
|
|
ALTER TABLE service_orders ADD COLUMN internal_type VARCHAR(30); -- revision, cleaning, maintenance
|
|
ALTER TABLE service_orders ADD COLUMN source_evaluation_id INTEGER REFERENCES device_evaluations(id);
|
|
```
|
|
|
|
### 7.5 Tabela `imei_history` (Kardex do IMEI)
|
|
|
|
```sql
|
|
CREATE TABLE imei_history (
|
|
id SERIAL PRIMARY KEY,
|
|
device_id INTEGER REFERENCES mobile_devices(id) NOT NULL,
|
|
action VARCHAR(50) NOT NULL,
|
|
-- entrada, venda, devolucao, transferencia, reparo_iniciado, reparo_finalizado, trade_in_aprovado
|
|
previous_status VARCHAR(50),
|
|
new_status VARCHAR(50),
|
|
related_order_id INTEGER, -- pode ser OS, venda, transferência
|
|
related_order_type VARCHAR(20), -- service_order, sale, transfer, evaluation
|
|
notes TEXT,
|
|
created_by INTEGER REFERENCES users(id),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Próximos Passos Imediatos
|
|
|
|
1. **Criar tabela `imei_history`** para rastreamento completo
|
|
2. **Implementar API de histórico** GET `/devices/:imei/history`
|
|
3. **Melhorar fluxo de status** da O.S. com validações
|
|
4. **Criar componente de carrinho** funcional no PDV
|
|
5. **Implementar geração de orçamento** automático
|
|
|
|
---
|
|
|
|
## 8. Integrações Existentes a Utilizar
|
|
|
|
| Sistema | Uso | Status |
|
|
|---------|-----|--------|
|
|
| ERPNext | Sincronizar clientes, produtos, fornecedores | ✅ Conectado |
|
|
| WhatsApp (Baileys) | Notificações ao cliente | ✅ Disponível |
|
|
| OpenAI | Sugestões inteligentes | ✅ Disponível |
|
|
| PostgreSQL | Banco de dados | ✅ Em uso |
|
|
|
|
---
|
|
|
|
*Este documento deve ser atualizado conforme o progresso da implementação.*
|