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 Helpdesk

Une fois le portail passé : compte agent de démonstration disponible, ou inscription libre en tant que client.

Modèle conceptuel de données

Vue d'ensemble des entités et de leurs associations.

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

PHP 7+ Architecture MVC MySQL 8.0 PDO + requêtes préparées password_hash (bcrypt) Hébergement IONOS

Tables de la base de données

Structure relationnelle de la base Helpdesk.

users
  • id Identifiant unique
  • nom / prenom
  • email Unique
  • mot_de_passe Hash bcrypt
  • role client ou agent
  • date_creation
tickets
  • titre / description
  • statut ouvert / en_cours / resolu / ferme
  • categorie materiel, logiciel…
  • user_id Créateur (FK)
  • technicien_id Agent assigné (FK)
  • date_creation / date_modification
historique_tickets
  • ticket_id FK vers tickets
  • ancien_statut
  • nouveau_statut
  • utilisateur_id Auteur du changement
  • date_modification
  • Rempli automatiquement par le trigger
tags
  • id Identifiant unique
  • nom Unique
  • Tags par défaut : Urgent, Critique…
ticket_tags
  • Pivot N:N (ticket ↔ tag)
  • ticket_id + tag_id (PK composite)
  • date_ajout Association porteuse
  • ON DELETE CASCADE