O sistema conta com três tipos de usuários, cada um com suas permissões e funcionalidades específicas:
- Administrador: Controle total sobre o sistema.
- Técnico: Responsável por atender e solucionar os chamados.
- Solicitante: (Funcionários/Professores) Usuários que abrem e acompanham seus chamados.
- Dashboard: Visão geral e acesso rápido para abrir chamados.
- Abrir Chamado: Formulário intuitivo para registrar novas solicitações (Título, Descrição, Categoria, Setor do Problema).
- Meus Chamados: Listagem e acompanhamento dos seus chamados, com filtros por status e período.
- Visualizar Detalhes: Acesso completo às informações do chamado, incluindo histórico e solução.
- Atualizar Perfil: Edição de dados pessoais e senha.
- Dashboard: Painel com chamados atribuídos e novos chamados aguardando atribuição.
- Meus Chamados Atribuídos: Lista de chamados sob sua responsabilidade, com filtros avançados.
- Atender Chamado:
- Visualização detalhada do problema.
- Atualização de status do chamado (Aberto, Em Atendimento, Resolvido, etc.).
- Registro da solução aplicada.
- Adição de comentários e atualizações (histórico).
- (Opcional) Assumir Chamado: Capacidade de se auto-atribuir a chamados abertos.
- Atualizar Perfil: Edição de dados pessoais e senha.
- Dashboard: Visão geral completa do sistema com estatísticas e métricas (gráficos são um bônus).
- Gerenciamento de Usuários: CRUD completo (Criar, Listar, Editar, Ativar/Desativar, Excluir) para todos os tipos de usuários.
- Gerenciamento de Categorias: CRUD para categorias de atendimento.
- Gerenciamento de Setores: CRUD para setores da escola.
- Gerenciamento de Chamados:
- Visualização de TODOS os chamados com filtros avançados.
- Atribuição de chamados a técnicos.
- Edição completa de informações de um chamado.
- Exclusão de chamados (com confirmação).
- Relatórios:
- Chamados por período, categoria, status, técnico.
- (Bônus) Tempo médio de resolução.
- Exportação para PDF (inicialmente, tabela HTML formatada para impressão).
- Atualizar Perfil: Edição de dados pessoais e senha.
- Proteção contra XSS:
htmlspecialchars()é utilizado para sanitizar saídas. - Proteção contra SQL Injection: Todas as interações com o banco de dados são feitas via PDO com Prepared Statements.
- Senhas Seguras: As senhas dos usuários são armazenadas utilizando
password_hash()e verificadas compassword_verify(). - Controle de Acesso: Verificação de permissões baseada no tipo de usuário logado para acesso às funcionalidades.
- XAMPP (ou similar: WAMP, MAMP, LAMP) instalado e configurado.
- Apache
- MySQL
- PHP 7.4 ou superior (com as extensões PDO e pdo_mysql habilitadas)
- Um navegador web moderno (Chrome, Firefox, Edge, Safari).
- Um editor de código (VS Code, Sublime Text, PhpStorm, etc.).
- Clone o repositório:
git clone https://github.com/rafaelmarinatoassis/HelpDesk--PHP-Mysql-.git cd SEU_REPOSITORIO - Configure o XAMPP:
- Inicie os módulos Apache e MySQL no painel de controle do XAMPP.
- Coloque a pasta do projeto dentro do diretório
htdocsdo XAMPP (ex:C:/xampp/htdocs/helpdesk-escolar).
- Crie o Banco de Dados:
- Acesse o phpMyAdmin (
http://localhost/phpmyadmin). - Crie um novo banco de dados (ex:
helpdesk_escolar_db). - Importe o arquivo
schema.sql(que você fornecerá) para criar as tabelas e estrutura inicial.
- Acesse o phpMyAdmin (
- Configure a Conexão:
- Renomeie (se necessário) e edite o arquivo
config/db.example.phpparaconfig/db.php. - Atualize as credenciais do banco de dados (
DB_HOST,DB_NAME,DB_USER,DB_PASS) emconfig/db.php. - Edite o arquivo
config/config.phppara definir aBASE_URLdo seu projeto (ex:define('BASE_URL', 'http://localhost/helpdesk-escolar/public');).
- Renomeie (se necessário) e edite o arquivo
- Acesse o Sistema:
- Abra seu navegador e acesse a
BASE_URLdefinida (ex:http://localhost/helpdesk-escolar/public). - Você deverá ver a página de login.
- Abra seu navegador e acesse a
Contas de Demonstração (Sugestão para schema.sql):
- Administrador:
admin@escola.com/senha123 - Técnico:
tecnico@escola.com/senha123 - Solicitante:
professor@escola.com/senha123
- Solicitante faz login e abre um novo chamado detalhando o problema.
- O chamado é registrado no sistema com status "Aberto".
- Administrador visualiza o novo chamado e o atribui a um Técnico disponível.
- Técnico recebe a notificação (ou visualiza em seu painel), analisa o chamado e atualiza seu status para "Em Atendimento".
- O Técnico trabalha na solução do problema.
- Após resolver, o Técnico registra a solução no sistema e atualiza o status para "Resolvido" (ou "Fechado").
- O Solicitante é notificado (ou visualiza em seu painel) que o chamado foi resolvido e pode ver a solução.
- O Administrador pode gerar relatórios incluindo este chamado para análises futuras.
O projeto está em desenvolvimento. As próximas etapas incluem:
- Implementação da Estrutura Base: Configuração inicial,
Database.php,Session.php. - Autenticação e Modelos Iniciais:
Usuario.php,Chamado.php, tela de login e lógica. - Módulo Solicitante: Implementação completa das funcionalidades do solicitante.
- Módulo Técnico: Implementação completa das funcionalidades do técnico.
- Módulo Administrador: Implementação das funcionalidades de gerenciamento (Usuários, Categorias, Setores).
- Gerenciamento Avançado de Chamados (Admin): Atribuição, edição, filtros.
- Relatórios (Admin): Implementação dos relatórios básicos.
- Refinamento da Interface: Melhorias visuais e de usabilidade com Bootstrap.
- Testes Unitários e de Integração: Garantir a qualidade e estabilidade do código.
- (Bônus) Notificações por Email: Para atualizações importantes nos chamados.
- (Bônus) Anexar Arquivos: Permitir que solicitantes e técnicos anexem arquivos aos chamados.
- (Bônus) Exportação de Relatórios para PDF/Excel: Utilizando bibliotecas como FPDF/TCPDF ou PhpSpreadsheet.
Contribuições são bem-vindas! Se você tem alguma ideia para melhorar o projeto, siga os passos:
- Faça um Fork do projeto.
- Crie uma nova Branch (
git checkout -b feature/sua-feature). - Faça suas alterações e Commit (
git commit -m 'Adiciona nova feature incrível'). - Envie para a sua Branch (
git push origin feature/sua-feature). - Abra um Pull Request.
Por favor, certifique-se de que seu código segue os padrões do projeto e inclua testes quando aplicável.
Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes (você precisará criar este arquivo se quiser formalizar a licença).
Feito com ❤️ e muito ☕ por Rafael Marinato Assis