Aplicação desenvolvida com Lightning Web Components (LWC) e Apex, hospedada na plataforma Salesforce, para gerenciamento de chamados (tickets) com controle de SLA e automações personalizadas.
💼 Este projeto foi desenvolvido com foco em boas práticas de desenvolvimento na Salesforce, cobrindo lógica assíncrona, triggers, cobertura de testes e componentes modernos com LWC.
- 🕒 Visualização de SLA — Barra de progresso dinâmica mostra o tempo restante ou estourado.
- ➕ Criação de chamados — Formulário interativo com campos obrigatórios e categorização.
- 📝 Formulário Web — Integração com Web-to-Case para submissão pública de chamados.
- ✏️ Edição de chamados — Permite atualizar status, datas e observações.
- ⚙️ Automação com Triggers — Lógicas disparadas automaticamente ao criar ou atualizar registros.
- 🧪 Cobertura com Classes de Teste — Para garantir deploys seguros e lógicos consistentes.
- Salesforce Lightning Web Components (LWC)
- Apex (triggers, classes, queueable, schedulable)
- SOQL / SOSL
- Salesforce Objects (Case, custom SLA, Pausa, etc.)
- GitHub Wiki para documentação
| Componente | Descrição |
|---|---|
SlaViewer |
Exibe o tempo restante de SLA com barra de progresso. |
TicketCreator |
Formulário para criação de chamados. |
TicketEditor |
Edição de chamados existentes. |
| Classe | Função |
|---|---|
CalcSLA |
Classe Queueable que calcula e atualiza o tempo restante de SLA. |
SchedableSLAUpdate |
Agendador para execução periódica da atualização do SLA. |
CaseControl |
Realiza operações de consulta e atualização de dados dos tickets. |
| Trigger | Evento | Função |
|---|---|---|
CaseTrigger |
before insert, before update | Calcula SLA, valida campos obrigatórios e controla atualizações. |
AccountTrigger |
before insert | Valida CNPJ, evitando duplicações. |
ContactTrigger |
before insert, before update | Valida e-mail, impedindo duplicações e atualizações indevidas. |
O sistema permite a criação de chamados por meio de um formulário público na web, utilizando o recurso Web-to-Case, integrado diretamente à plataforma Salesforce.
-
✅ Funcionalidades Implementadas
-
📥 Submissão de chamados públicos via formulário externo
-
🔐 Validação de campos obrigatórios
-
📝 Mapeamento para campos personalizados no objeto Case
-
🔄 Gatilhos automáticos para cálculo de SLA e demais lógicas após a criação do chamado
O sistema está integrado em um Aplicativo personalizado no Salesforce, com páginas Lightning criadas via Lightning App Builder para oferecer uma experiência rica e orientada ao usuário final.
- Criado para agrupar os componentes do sistema HelpDesk em uma interface unificada.
- Navegação simplificada entre a página inicial, registros de chamados e outras funcionalidades.
- Contém:
- 📊 Dashboard Salesforce para visualização geral dos chamados (status, prazos, etc.).
- ⚙️ Dois componentes Lightning Web Components (LWC) integrados à página:
- Um para visualização resumida dos SLAs ativos.
- Outro para criação rápida de chamados.
- Customização da página de detalhes dos chamados (
Case), incluindo:- Campos reordenados e destacados para facilitar a leitura.
- Inclusão de um LWC personalizado que mostra informações avançadas do SLA ou histórico do chamado.
- Layout adaptado para facilitar o uso por atendentes e supervisores.
- Integração total entre dados do Salesforce e os componentes LWC, garantindo performance e interatividade.
Cobertura de código com foco em garantir a integridade da lógica e conformidade para deploys.
| Classe de Teste | Objetivo |
|---|---|
testCalcSla |
Testa o cálculo de SLA e valida campos obrigatórios. |
testCaseControl |
Garante o funcionamento do controller de criação e edição de chamados. |
testCaseTrigger |
Verifica o comportamento da trigger ao inserir e atualizar casos. |
testAccountTrigger |
Testa a trigger de Account com foco na validação de CNPJ. |
testContactTrigger |
Testa validação de e-mails e comportamento da trigger de Contact. |
testQueueable |
Testa o processamento assíncrono com lógica Queueable. |
testScheduableSlaUpdate |
Testa a execução e os efeitos do agendamento com Schedulable. |
Este projeto deve ser hospedado em uma org Salesforce.
Este projeto depende criticalmente da existência de campos e valores de lista de seleção (picklist) específicos em sua org Salesforce. Execute os passos abaixo ANTES de fazer o deploy do código.
No Objeto Account:
| Label | API Name | Tipo | Detalhes |
|---|---|---|---|
| Active | Active__c | Picklist | Valores: No, Yes |
| CNPJ | CNPJ__c | Texto | Tamanho: 18 caracteres |
No Objeto Case (Ocorrência):
| Label | API Name | Tipo | Detalhes |
|---|---|---|---|
| Category | Category__c | Picklist | Valores: Backup, Email, User Management, Internet, Software, Hardware, Printer |
| Date Pause | DatePause__c | Data/Hora | - |
| Date Unpause | DateUnpause__c | Data/Hora | - |
| Email__c | - | ||
| Finish SIA | FinishSia__c | Data/Hora | - |
| Name | Name__c | Texto | - |
| Surname | Surname__c | Texto | - |
| SIA | SIA__c | Número | Escala: 2, Dígitos: 2 |
| SIA Response | SiaResponse__c | Número | Escala: 2, Dígitos: 16 |
| SIA Paused | SiaPaused__c | Caixa de seleção | - |
| Start Service | StartService__c | Caixa de seleção | - |
| Vigency | Vigency__c | Picklist | Valores: Average, High, Low |
O projeto também utiliza os seguintes valores em campos padrões do Salesforce. Atualize os seguintos campos no objeto Case:
Campo Type (Tipo):
- Deployment
- Incident
- Preventive
- Problem
- Request
Campo Origin (Origem):
- Phone
- Web
- Web Form
Certifique-se de que o usuário que fará o deploy do código tem permissão de Personalizar Aplicação (Customize Application).
Após o deploy, será necessário atribuir os Permission Sets gerados pelo pacote aos usuários finais.
Após confirmar que TODOS os campos e picklists acima foram criados e configurados, prossiga com a instalação do código:
# 1. Clone o repositório
git clone https://github.com/mtfreitas-dev/SystemHelpDesk.git
cd SystemHelpDesk
# 2. Autentique-se na sua org de desenvolvimento (alias: myDevOrg)
sfdx auth:web:login -s -a myDevOrg
# 3. Realize o deploy dos metadados
sfdx force:source:deploy -p ./force-app/main/default -u myDevOrg- Causa: O campo customizado
Category__cnão foi criado no objetoCase. - Solução: Volte ao Passo 1 e crie todos os campos customizados listados.
- Causa: O valor
Hardwarenão existe na lista de seleção do campoCategory__c. - Solução: Edite o campo
Category__ce adicione o valor missing à picklist.
- Causa: Valores missing nos campos nativos
TypeouOrigin. - Solução: Verifique e complete a configuração dos picklists nativos no Passo 2.