Accueil Mes projets

Création d'un site Web de chatbot | SETM de Nouâtre

PHP Laravel
Gestion de projet

J'ai créé un site Web avec Laravel pour héberger le modèle d'IA, afin de créér l'expert technique virtuel.

Logo de ETV

Problématique

La Section d’Expertise Technique du MCO-T (SETM) de Nouâtre a besoin d’un Expert Technique Virtuel (ETV) pour répondre aux questions des techniciens sur des équipements spécifiques. La mission consiste à développer un site Web où l’IA sera hébergée, permettant aux utilisateurs d’interagir avec le modèle pour obtenir des réponses précises sur des équipements complexes.


Planification du projet

La gestion du projet a été facilitée par Todoist, où j’ai listé et priorisé chaque tâche :

  1. Choix des technologies :
    • Environnement de développement : Laragon
    • Backend : Laravel
    • CSS : Tailwind CSS
  2. Création de la structure de la base de données : MySQL.
  3. Développement de l’interface utilisateur :
  4. Développement de l’interface d’administration.
  5. Intégration de l’API du modèle d’IA.
  6. Tests et déploiement.


Début du projet

Après avoir reçu la directive d’utiliser un framework PHP, j’ai opté pour Laravel en raison de sa simplicité et de ses fonctionnalités robustes. J’ai également créé une interface d’administration pour gérer les conversations, suivre l’historique et monitorer l’interaction avec l’IA.


Code du projet

1. Initialisation du projet Laravel :

composer create-project --prefer-dist laravel/laravel etv

2. Configuration de la base de données :

Dans le fichier .env, j’ai dû modifié modifier la connexion à la base de données MySQL :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=etv

J’ai ensuite modifié la table des utilisateurs puis j’ai créé la migration pour la table des conversations, des messages, qui enregistrera les échanges entre les utilisateurs et l’IA :

Utilisateurs :
// Utilisateurs
public function up(): void
    {
        Schema::create('users', function (Blueprint $table)
        {
            $table->id('id');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->boolean('enabled')->default(true);
            $table->rememberToken();
            $table->timestamps();
        });
    }
Conversations :
// Conversations
public function up(): void
    {
        Schema::create('conversations', function (Blueprint $table)
        {
            $table->uuid('uuid')->unique()->primary();
            $table->string('name');
            $table->string('status');
            $table->bigInteger('user_uuid')->unsigned();
            $table->timestamps();

            $table->foreign('user_uuid')->references('id')->on('users')->onDelete('cascade');
        });
    }
Messages :
// Messages
public function up(): void
    {
        Schema::create('messages', function (Blueprint $table)
        {
            $table->uuid('uuid')->unique()->primary();
            $table->text('content');
            $table->string('type');
            $table->uuid('conversation_uuid');
            $table->timestamps();

            $table->foreign('conversation_uuid')->references('uuid')->on('conversations')->onDelete('cascade');
        });
    }

J’execute la migration pour créér les tables dans la base de données :

php artisan migrate

3. Création des routes et des vues :

J’ai ajouté les routes pour la page de chat :

// routes/web.php
use App\Http\Controllers\ChatController;
use App\Http\Controllers\AdminController;

Route::middleware(['auth', 'user-enabled'])->group(function ()
{
    // Page d'accueil du chat
    Route::get('/chat', [ConversationController::class, 'index'])->name('conversation.index');

    // Page de la conversation avec l'UUID en paramètre
    Route::get('/chat/conversation/{uuid}', [ConversationController::class, 'show'])->name('conversation.show');
});

4. Création de l’interface d’administration :

créé un contrôleur pour l’interface admin, permettant de voir l’historique des conversations et les surveiller.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Conversation;

class AdminController extends Controller
{
    public function index()
    {
        $conversations = Conversation::all();
        return view('admin.index', ['conversations' => $conversations]);
    }
}

Conclusion

Ce projet inclut la création d’une interface utilisateur pour interagir avec le modèle d’IA, ainsi qu’une interface d’administration permettant de suivre et gérer les conversations. Grâce à Laravel, le site est performant et facilement extensible pour des besoins futurs.