Fluxos de Negócio
Documentação dos principais fluxos de negócio do sistema PAC.
Fluxo de Cadastro e Vinculação Cliente-RT
sequenceDiagram
participant Admin as Admin
participant Sistema as Sistema
participant Cliente as Cliente
participant RT as Responsável Técnico
participant Email as Email Service
Admin->>Sistema: Cadastrar Cliente
Sistema->>Sistema: Criar User para Cliente
Sistema->>Email: Enviar email boas-vindas
Email->>Cliente: Email com credenciais
Cliente->>Sistema: Login
Cliente->>Sistema: Solicitar vínculo com RT
Sistema->>Email: Enviar email ao RT
Email->>RT: Notificação de solicitação
RT->>Sistema: Visualizar solicitação
alt Aceitar
RT->>Sistema: Aceitar vínculo
Sistema->>Email: Enviar confirmação
Email->>Cliente: Email de aprovação
else Rejeitar
RT->>Sistema: Rejeitar vínculo
Sistema->>Email: Enviar rejeição
Email->>Cliente: Email de rejeição
end
Fluxo de Criação e Execução de Formulários
sequenceDiagram
participant RT as Responsável Técnico
participant Sistema as Sistema
participant Cron as Job Cron
participant Cliente as Cliente/Técnico
participant Email as Email Service
RT->>Sistema: Criar modelo de formulário
RT->>Sistema: Adicionar perguntas
RT->>Sistema: Configurar frequência/horários
RT->>Sistema: Vincular clientes
RT->>Sistema: Publicar formulário
Note over Cron: Executa a cada 10 minutos
Cron->>Sistema: Verificar formulários publicados
Sistema->>Sistema: Verificar frequência/horário
Sistema->>Sistema: Criar instâncias para clientes
Sistema->>Cliente: Formulário pendente disponível
Cliente->>Sistema: Preencher formulário
Sistema->>Sistema: Avaliar conformidade
alt Há não conformidade
Sistema->>Sistema: Status = NAO_CONFORMIDADE
Sistema->>RT: Notificação no monitoramento
else Tudo em conformidade
Sistema->>Sistema: Status = EM_CONFORMIDADE
end
Cliente->>Sistema: Justificar não conformidade (se houver)
Sistema->>Sistema: Status = JUSTIFICADO
Fluxo de Sistema de Chamados
sequenceDiagram
participant Cliente as Cliente
participant Sistema as Sistema
participant RT as Responsável Técnico
participant Email as Email Service
Cliente->>Sistema: Abrir chamado
Sistema->>Sistema: Gerar protocolo único
Sistema->>Email: Enviar email ao RT
Email->>RT: Notificação de novo chamado
Sistema->>Cliente: Confirmação de criação
RT->>Sistema: Visualizar chamado
RT->>Sistema: Responder chamado
Sistema->>Sistema: Status = RESPONDIDO
Sistema->>Email: Enviar resposta ao cliente
Email->>Cliente: Notificação de resposta
Fluxo de Avaliação de Conformidade
flowchart TD
Start([Formulário Preenchido]) --> Avaliar{Analisar Respostas}
Avaliar -->|Todas conformes| Conforme[Status: EM_CONFORMIDADE]
Avaliar -->|Há não conformidade| VerificarJustificativa{Justificada?}
VerificarJustificativa -->|Sim| Justificado[Status: JUSTIFICADO]
VerificarJustificativa -->|Não| NaoConforme[Status: NAO_CONFORMIDADE]
Conforme --> Monitoramento[Dashboard Verde]
Justificado --> MonitoramentoAmarelo[Dashboard Amarelo]
NaoConforme --> MonitoramentoVermelho[Dashboard Vermelho]
MonitoramentoVermelho --> AcaoRT[RT deve tomar ação]
MonitoramentoAmarelo --> Atencao[Requer atenção]
Monitoramento --> OK[Tudo OK]
Fluxo de Geração Automática de Instâncias
flowchart TD
Start([Job Cron - A cada 10 min]) --> BuscarModelos[Buscar modelos PUBLICADOS e ATIVOS]
BuscarModelos --> ParaCadaModelo{Para cada modelo}
ParaCadaModelo --> VerificarFrequencia{Verificar frequência}
VerificarFrequencia -->|Diário| VerificarHorario[Verificar horários]
VerificarFrequencia -->|Semanal| VerificarDia{É dia configurado?}
VerificarFrequencia -->|Personalizado| VerificarDiaPersonalizado{É dia configurado?}
VerificarDia -->|Não| ProximoModelo[Próximo modelo]
VerificarDia -->|Sim| VerificarHorario
VerificarDiaPersonalizado -->|Não| ProximoModelo
VerificarDiaPersonalizado -->|Sim| VerificarHorario
VerificarHorario --> VerificarJanela{Horário dentro da janela? ±15min}
VerificarJanela -->|Não| ProximoModelo
VerificarJanela -->|Sim| BuscarClientes[Buscar clientes vinculados ATIVOS]
BuscarClientes --> ParaCadaCliente{Para cada cliente}
ParaCadaCliente --> VerificarExistencia{Já existe instância?}
VerificarExistencia -->|Sim| ProximoCliente[Próximo cliente]
VerificarExistencia -->|Não| CriarInstancia[Criar instância PENDENTE]
CriarInstancia --> ProximoCliente
ProximoCliente --> MaisClientes{Há mais clientes?}
MaisClientes -->|Sim| ParaCadaCliente
MaisClientes -->|Não| ProximoModelo
ProximoModelo --> MaisModelos{Há mais modelos?}
MaisModelos -->|Sim| ParaCadaModelo
MaisModelos -->|Não| Fim([Fim])