SET NOCOUNT ON; delete from [WebHookNotification] delete from [Rule] delete from [Group] DBCC CHECKIDENT ('WebHookNotification', RESEED, 1); DBCC CHECKIDENT ('Rule', RESEED, 1); DBCC CHECKIDENT ('Group', RESEED, 1); --------------------------------------- -- 1. INSERT GROUPS (50) --------------------------------------- DECLARE @groupIndex INT = 1; WHILE @groupIndex <= 50 BEGIN INSERT INTO [Group] (Name, Description, Color) VALUES ( CONCAT('Grupo_', @groupIndex), CONCAT('Descrição do grupo ', @groupIndex, ' - ', NEWID()), CONCAT('#', RIGHT(CONVERT(VARCHAR(40), NEWID()), 6)) ); SET @groupIndex += 1; END --------------------------------------- -- 3. INSERT RULES (200) --------------------------------------- DECLARE @totalRules INT = 200; DECLARE @inactiveLimit INT = 10; DECLARE @ruleIndex INT = 1; -- pegar ranges existentes DECLARE @maxGroupId INT = (SELECT MAX(Id) FROM [Group]); WHILE @ruleIndex <= @totalRules BEGIN DECLARE @groupId INT; DECLARE @isActive BIT; -- distribuição aleatória SET @groupId = 1 + ABS(CHECKSUM(NEWID())) % @maxGroupId; -- 10 primeiras inativas IF @ruleIndex <= @inactiveLimit SET @isActive = 0; ELSE SET @isActive = 1; INSERT INTO Dashboard.dbo.[Rule] ( Name, Description, MarkdownContent, StoredProcedure, Active, GroupId, ConnectionKey ) VALUES ( CONCAT('Regra_Negocio_', @ruleIndex), CONCAT('Descrição da regra de negócio ', @ruleIndex, ' - ', NEWID()), -- Markdown fake variado CONCAT( '# Regra ', @ruleIndex , CHAR(10), ' # 📌 Regra de Validação de Dados --- ## 🧩 Visão Geral A validação de dados é um dos pilares fundamentais para garantir a **qualidade, consistência e confiabilidade** das informações em qualquer sistema. Esta regra de validação foi criada com o objetivo de: - Identificar registros inconsistentes - Prevenir falhas em processos dependentes de dados - Facilitar auditoria e correção de informações - Garantir aderência às regras de negócio 📌 **Por que isso é importante?** Dados inconsistentes podem causar problemas como: - Falhas em integrações com outros sistemas - Erros em relatórios gerenciais - Problemas no envio de e-mails ou notificações - Decisões baseadas em dados incorretos 💡 *Exemplo real:* > Um cliente cadastrado sem e-mail válido não receberá comunicações importantes, impactando diretamente a operação. --- ## ⚙️ Arquitetura da Solução A solução foi implementada utilizando uma **Stored Procedure (SQL Server)**, que centraliza toda a lógica de validação. ### 🧱 Componentes principais: - **Procedure:** `sp_rules_fake` - **Tabela temporária:** utilizada para simulação e processamento - **Geração de dados:** criação de registros para teste - **Motor de validação:** aplicação das regras - **Saída padronizada:** retorno estruturado --- ## 🔍 Detalhamento da Implementação ### 📦 Procedure ```sql sp_rules_fake ' ), 'sp_rules_fake', @isActive, @groupId, 'BancoTeste' ); SET @ruleIndex += 1; END --------------------------------------- -- 3. INSERT WebHooks (200) --------------------------------------- DECLARE @webhookIndex INT = 1; WHILE @webhookIndex <= 30 BEGIN INSERT INTO WebHookNotification (Name, Uri) VALUES ( CONCAT('Webhook_', @webhookIndex), 'https://dashboad.requestcatcher.com/' ); SET @webhookIndex += 1; END --------------------------------------- -- CHECK FINAL --------------------------------------- SELECT (SELECT COUNT(*) FROM [Group]) AS TotalGroups, (SELECT COUNT(*) FROM Dashboard.dbo.[Rule]) AS TotalRules, (SELECT COUNT(*) FROM Dashboard.dbo.[Rule] WHERE Active = 0) AS InactiveRules, (SELECT COUNT(*) FROM WebHookNotification) AS TotalWebhooks;