╔══════════════════════════════════════════════════════════════════════════════╗ ║ TIPO DE ALCANCE - FLUXO VISUAL ║ ╚══════════════════════════════════════════════════════════════════════════════╝ ┌─────────────────────────────────────────────────────────────────────────────┐ │ PASSO 1: USUÁRIO SELECIONA TIPO DE ALCANCE │ └─────────────────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────┐ │ SELECT: Tipo de Alcance │ │ ┌────────────────────────────────┐ │ │ │ ○ Todos os equipamentos │◄─┼─── OPÇÃO 1 (padrão) │ │ ○ Serial Específico │◄─┼─── OPÇÃO 2 │ │ ○ Empresa Específica │◄─┼─── OPÇÃO 3 │ └────────────────────────────────┘ │ └──────────────────────────────────────┘ │ │ onChange (JavaScript) ▼ ┌──────────────────────┐ │ updateFields() │ │ - Oculta tudo │ │ - Mostra relevante │ └──────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ OPÇÃO 1: TODOS OS EQUIPAMENTOS │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ ✅ tipo_alcance = 'todos' │ │ ✅ equipment_serial = NULL │ │ ✅ empresa_alcance_id = NULL │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ NENHUM CAMPO EXTRA APARECE │ │ ┌──────────────────────────────────┐ │ │ │ [Salvar] [Cancelar] │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ RESULTADO: Exibe em TODOS │ │ equipamentos (1000+) │ └────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ OPÇÃO 2: SERIAL ESPECÍFICO │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ ✅ tipo_alcance = 'serial_especifico' │ │ 🔽 CAMPO SERIAL APARECE │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ 📝 Serial do Equipamento * │ │ ┌──────────────────────────────────┐ │ │ │ ABC123456 │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [Salvar] [Cancelar] │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ ✅ equipment_serial = 'ABC123456' │ │ ✅ empresa_alcance_id = NULL │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ RESULTADO: Exibe APENAS no │ │ equipamento ABC123456 │ └────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ OPÇÃO 3: EMPRESA ESPECÍFICA │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ ✅ tipo_alcance = 'empresa' │ │ 🔽 CAMPO EMPRESA APARECE │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ 📝 Empresa * │ │ ┌──────────────────────────────────┐ │ │ │ 🔽 Shopping Iguatemi │ │ │ │ - Shopping Morumbi │ │ │ │ - Shopping Paulista │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [Salvar] [Cancelar] │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ ✅ equipment_serial = NULL │ │ ✅ empresa_alcance_id = 5 │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ RESULTADO: Exibe em TODOS os │ │ equipamentos do Shopping Iguatemi │ │ (15 equipamentos) │ └────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ CONSULTA: EQUIPAMENTO ABC123 (Empresa ID 5) SOLICITA PUBLICAÇÕES │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ Query no Banco: │ │ WHERE ( │ │ tipo_alcance = 'todos' │◄─── Pega todas globais │ OR (tipo_alcance = 'serial_especifico' │ AND equipment_serial = 'ABC123')│◄─── Pega específicas deste serial │ OR (tipo_alcance = 'empresa' │ │ AND empresa_alcance_id = 5) │◄─── Pega da empresa deste equip. │ ) │ │ AND status = 'ativa' │ │ AND data_inicio <= NOW() │ │ AND data_fim >= NOW() │ └────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────┐ │ RESULTADO: Lista de Publicações │ │ ┌──────────────────────────────────┐ │ │ │ Pub #1: Black Friday (todos) │ │ │ │ Pub #5: Teste A/B (ABC123) │ │ │ │ Pub #8: Promo Iguatemi (emp 5) │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ RESUMO DAS VALIDAÇÕES │ └─────────────────────────────────────────────────────────────────────────────┘ ╔═══════════════════╦═══════════════════╦═══════════════════╦═══════════╗ ║ Tipo Alcance ║ equipment_serial ║ empresa_alcance_id║ Resultado ║ ╠═══════════════════╬═══════════════════╬═══════════════════╬═══════════╣ ║ todos ║ NULL ║ NULL ║ ✅ VÁLIDO ║ ║ serial_especifico ║ 'ABC123' ║ NULL ║ ✅ VÁLIDO ║ ║ serial_especifico ║ NULL ║ NULL ║ ❌ ERRO ║ ║ empresa ║ NULL ║ 5 ║ ✅ VÁLIDO ║ ║ empresa ║ NULL ║ NULL ║ ❌ ERRO ║ ╚═══════════════════╩═══════════════════╩═══════════════════╩═══════════╝ ┌─────────────────────────────────────────────────────────────────────────────┐ │ BADGES NA LISTAGEM │ └─────────────────────────────────────────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ Publicação #1 │ │ ┌──────────────────────────────────┐ │ │ │ 🌐 Todos os equipamentos │ │ (badge azul) │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ Publicação #2 │ │ ┌──────────────────────────────────┐ │ │ │ 📊 Serial específico │ │ (badge amarelo) │ │ ABC123456 │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘ ┌────────────────────────────────────────┐ │ Publicação #3 │ │ ┌──────────────────────────────────┐ │ │ │ 🏢 Empresa específica │ │ (badge ciano) │ │ Shopping Iguatemi │ │ │ └──────────────────────────────────┘ │ └────────────────────────────────────────┘