# Dossier de configuration - Projet Webzine **Équipe 1** **Formation :** Développement .NET niveau 1 / Dr1-P4 **Date :** Mars 2026 --- ## Table des modifications | Date | Auteur | | ----- | ------------- | | 25/03 | Clément Bobin | | 31/03 | Joséphine Vetu | | 08/04 | Joséphine Vetu | --- ## 1. Prérequis Avant de lancer l'application, assurez-vous d'avoir installé les outils suivants : | Outil | Version minimale | Lien | | -------------------------------------- | ---------------------------- | ------------------------------------- | | .NET SDK | 10.0 | https://dotnet.microsoft.com/download | | Node.js (optionnel, pour outils front) | 18+ | https://nodejs.org | | Git | 2.x | https://git-scm.com | | Un IDE | Visual Studio 2022+ ou Rider | - | --- ## 2. Récupérer le projet ```bash git clone cd Webzine ``` --- ## 3. Structure des projets Le projet est organisé en plusieurs bibliothèques de classes et une application web : ``` Webzine.sln ├── Webzine.Entity/ → Entités du domaine (modèles) ├── Webzine.Entity.Tests/ → Tests unitaires MSTest ├── Webzine.Repository.Contracts/ → Interfaces des repositories ├── Webzine.Repository/ → Implémentations des repositories ├── Webzine.Business.Contracts/ → Interfaces de la couche métier ├── Webzine.Business/ → Logique métier ├── Webzine.EntitiesContext/ → Contexte Entity Framework (à venir) ├── Webzine.Documentation/ → Documentation, StyleCop, rapports └── Webzine.WebApplication/ → Application ASP.NET Core MVC (.NET 10) ``` --- ## 4. Lancer l'application ### Via la ligne de commande ```bash cd Webzine.WebApplication dotnet run ``` L'application est accessible par défaut à : - **HTTP :** http://localhost:5038 - **HTTPS :** https://localhost:7095 Ces URLs sont configurées dans `Webzine.WebApplication/Properties/launchSettings.json`. ### Via Visual Studio Ouvrir `Webzine.sln`, sélectionner le profil `https` ou `http`, puis lancer avec F5 ou Ctrl+F5. --- ## 5. Configuration applicative La configuration de l'application est répartie sur plusieurs fichiers `appsettings` selon l'environnement. ### `appsettings.json` - configuration commune Ce fichier contient les paramètres partagés entre tous les environnements : - **Logging** : niveau `Information` par défaut, `Warning` pour ASP.NET Core, et `Debug` pour la couche repository afin de tracer les requêtes. - **Webzine** : paramètres d'affichage (nombre de chroniques et de titres sur la page d'accueil, nombre de lignes dans les vues d'administration). Ces valeurs sont injectées via `IConfiguration` et modifiables sans recompilation. - **ConnectionStrings** : chaînes de connexion pour SQLite (dev) et PostgreSQL (prod). L'application bascule de l'une à l'autre selon la valeur de `Repository`. - **SpotifySeeder** : paramètres de l'import Spotify - credentials, marché cible, genres musicaux, et limites de volumétrie (artistes par genre, albums par artiste, titres par album, commentaires par titre). - **EfPerformance** : seuil en millisecondes au-delà duquel une requête Entity Framework est considérée comme lente (60 ms par défaut). ### Configuration par environnement #### Développement - `appsettings.Development.json` ```json { "Seeder": "Spotify", "Repository": "Db", "SpotifySeeder": { "ClientId": "", "ClientSecret": "" } } ``` #### Production - `appsettings.Production.json` ```json { "Seeder": "Local", "Repository": "Db", "SpotifySeeder": { "ClientId": "", "ClientSecret": "" } } ``` ### Valeurs acceptées Les propriétés `Seeder` et `Repository` correspondent aux enums suivants : ```csharp public enum SeederType { Local, // Données mockées en mémoire Spotify, // Données récupérées depuis l'API Spotify } public enum RepositoryType { Local, // Données en mémoire (pas de base de données) Db, // Base de données (SQLite en dev, PostgreSQL en prod) } ``` | Propriété | Type | Valeurs acceptées | Description | |---|---|---|---| | `Seeder` | `SeederType` | `Local`, `Spotify` | Source des données au démarrage | | `Repository` | `RepositoryType` | `Local`, `Db` | Mode d'accès aux données | | `SpotifySeeder.ClientId` | string | - | Identifiant de l'application Spotify | | `SpotifySeeder.ClientSecret` | string | - | Secret de l'application Spotify | --- ## 6. Logging (NLog) La configuration du logging se trouve dans `Webzine.WebApplication/nlog.config`. Les logs sont écrits dans le dossier `/Logs/` avec deux fichiers : | Fichier | Contenu | | --------------------- | ----------------------------------------------------- | | `nlog-all-{date}.log` | Tous les logs (Debug et supérieur pour l'application) | | `nlog-own-{date}.log` | Logs applicatifs avec URL de la requête | Les logs de la console sont également activés, utiles lors du développement. **Niveaux configurés :** - `Webzine.WebApplication.*` → Debug et supérieur - `Microsoft.*` → Warning et supérieur (pour réduire le bruit) - `Microsoft.Hosting.Lifetime*` → Info (pour voir le démarrage de l'appli) Pour modifier le niveau de log minimum sans recompiler, éditer la règle correspondante dans `nlog.config`. NLog recharge automatiquement sa configuration (`autoReload="true"`). --- ## 7. Lancer les tests ```bash cd Webzine.Entity.Tests dotnet test ``` Ou depuis la solution complète : ```bash dotnet test Webzine.sln ``` Les tests vérifient les contraintes de validation (annotations DataAnnotations) sur toutes les entités. Ils s'exécutent en parallèle au niveau des méthodes (`[assembly: Parallelize(Scope = ExecutionScope.MethodLevel)]`). **Résultat attendu :** 55 tests passants, 0 échec. --- ## 8. Routes principales | URL | Contrôleur | Description | | ----------------------------- | --------------------------- | ------------------------ | | `/` | `AccueilController.Index` | Page d'accueil | | `/artiste/{nom}` | `ArtisteController.Index` | Page d'un artiste | | `/titre/{id}` | `TitreController.Details` | Détail d'un titre | | `/titre/style/{style}` | `TitreController.Style` | Titres par style | | `/recherche` (POST) | `RechercheController.Index` | Résultats de recherche | | `/Administration/Dashboard` | `DashboardController.Index` | Tableau de bord admin | | `/Administration/Artiste` | `ArtisteController` (admin) | Gestion des artistes | | `/Administration/Titre` | `TitreController` (admin) | Gestion des titres | | `/Administration/Style` | `StyleController` | Gestion des styles | | `/Administration/Commentaire` | `CommentaireController` | Gestion des commentaires | --- ## 10. Variables d'environnement L'environnement est contrôlé par la variable `ASPNETCORE_ENVIRONMENT`. En développement, elle vaut `Development` (configuré dans `launchSettings.json`). En production, positionner : ```bash export ASPNETCORE_ENVIRONMENT=Production ``` Cela désactive les pages d'erreur détaillées et active les optimisations de performance ASP.NET Core. ## Ajout du pre-commit ```bash git config core.hooksPath Webzine.Documentation/git_hooks ``` Les fichiers présents dans le dossier git_hooks sont les suivants: Le pre-commit reformatte le code à chaque commit. Le commit-msg vérifie si le message du commit respecte bien les conventions du cahier des charges: - le message référence un ticket - le message termine par un point - le message doit faire au moins 10 caractères Il n'est pas nécessaire de les copier et de les ajouter au dossier caché .git. La commande ci-dessus suffit.