# 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 |

---

## 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 <url-du-dépôt>
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

Le fichier principal de configuration est `Webzine.WebApplication/appsettings.json` :

```json
{
  "Webzine": {
    "NombreDerniereChronique": 3,
    "NombreDeTopTitres": 3
  }
}
```

| Propriété | Type | Description | Valeur par défaut |
|-----------|------|-------------|-------------------|
| `NombreDerniereChronique` | int | Nombre de chroniques affichées sur la page d'accueil (section "Derniers titres") | 3 |
| `NombreDeTopTitres` | int | Nombre de titres affichés dans le bloc "Titres les plus populaires" | 3 |

Ces valeurs sont injectées dans `AccueilController` via `IConfiguration` et peuvent être modifiées sans recompilation.

Pour l'environnement de développement, les surcharges se font dans `appsettings.Development.json`.

---

## 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.