Projet : Helpdesk - Gestion de tickets
Application web de gestion de tickets de support
J'ai développé cette application Helpdesk dans le cadre du Projet 1 de l'épreuve E6 du BTS SIO. C'est une plateforme web permettant à des clients de créer des tickets de support et à des agents de les prendre en charge, les modifier et les résoudre.
J'ai construit l'application en PHP pur en suivant une architecture MVC (Modèle / Vue / Contrôleur). L'accès à la base de données est fait via PDO avec requêtes préparées pour éviter les injections SQL, les mots de passe sont hachés avec password_hash() (bcrypt), et j'ai mis en place un trigger MySQL qui enregistre automatiquement chaque changement de statut dans une table d'historique.
Informations du Projet
- Catégorie Application Web
- Langage PHP 7+ (MVC)
- Base de données MySQL 8.0
- Hébergement IONOS
- Contexte E6 Projet 1
Tester l'application en ligne
Projet pédagogique déployé sur IONOS. Accès restreint par mot de passe, transmis au jury.
Accéder au HelpdeskUne fois le portail passé : compte agent de démonstration disponible, ou inscription libre en tant que client.
Fonctionnalités principales
Les principaux cas d'usage couverts par l'application.
Authentification à deux rôles
Inscription libre en tant que client, ou connexion avec un compte agent créé par l'administrateur. Les mots de passe sont hachés en bcrypt via password_hash().
Création de tickets
Un client saisit un titre, une description et choisit une catégorie (matériel, logiciel, réseau, sécurité, autre). Le ticket est automatiquement en statut « ouvert ».
Workflow de statut
Les agents font évoluer le ticket entre « ouvert », « en cours », « résolu » et « fermé ». Chaque transition est tracée dans l'historique.
Système de tags
Relation N:N entre tickets et tags (association porteuse avec date d'ajout). Tags par défaut : Urgent, Critique, En attente client, Doublon…
Historique automatique
Un trigger AFTER UPDATE sur la table tickets insère automatiquement chaque changement de statut dans la table historique, avec l'auteur et la date.
Procédure stockée
Procédure fermer_tickets_resolus() qui ferme automatiquement les tickets résolus depuis plus de 30 jours. Pensée pour être appelée par une tâche planifiée.
Stack technique
Tables de la base de données
Structure relationnelle de la base Helpdesk.
users
idIdentifiant uniquenom/prenomemailUniquemot_de_passeHash bcryptroleclient ou agentdate_creation
tickets
titre/descriptionstatutouvert / en_cours / resolu / fermecategoriemateriel, logiciel…user_idCréateur (FK)technicien_idAgent assigné (FK)date_creation/date_modification
historique_tickets
ticket_idFK vers ticketsancien_statutnouveau_statututilisateur_idAuteur du changementdate_modification- Rempli automatiquement par le trigger
tags
idIdentifiant uniquenomUnique- Tags par défaut : Urgent, Critique…
ticket_tags
- Pivot N:N (ticket ↔ tag)
ticket_id+tag_id(PK composite)date_ajoutAssociation porteuse- ON DELETE CASCADE