v0.12.0 — Report tool auto-deploy from PROSERVE ZIP

Each PROSERVE ZIP can ship a _report/ subfolder alongside _migrations/.
After install + DB migration, the launcher copies _report/ to the local
XAMPP htdocs (default C:\xampp\htdocs\ProserveReport\) so the Reports
tab in the sidebar always serves the matching version.

Service (PSLauncher.Core/ReportTool)
- IReportToolDeployer + ReportToolDeployer.
- Atomic deploy: copy to {target}.new/ → rename current to .old/ →
  rename .new → final → cleanup .old. Apache never sees a half-state.
- Skip silencieux si _report/ absent du ZIP (PROSERVE release qui ne
  touche pas au Report).
- DeployStatus enum (SkippedNoSourceFolder, XamppNotFound, Failed,
  Deployed) renvoyé pour gestion UI claire.

Config (LocalConfig)
- ReportToolConfig (HtdocsRoot, FolderName, AutoDeploy). Defaults
  matchent l'install standard ASTERION (C:\xampp\htdocs\ProserveReport).

Install pipeline (MainViewModel)
- Étape 6 après extraction + migrations. Progress reporté via le footer
  Library : « 📂 Déploiement Report : 47/120 — assets/main.js ».
  XAMPP introuvable → dialog avec lien vers Settings → Avancés.

Settings UI (SettingsDialog → Avancés)
- Nouveau bloc « OUTIL REPORT (XAMPP htdocs) » : 2 champs path + checkbox
  AutoDeploy + bouton « 📂 Re-déployer maintenant » qui rejoue le deploy
  sur la dernière version installée. Utile après changement de chemin
  htdocs ou si l'auto-deploy avait foiré (XAMPP éteint).

Versions bumped to 0.12.0 (App + Updater + installer .iss).

Côté release : tu ajoutes _report/ dans le source de PROSERVE, tu zippes,
tu uploades. Les clients récupèrent ZIP + migrations + Report en une
seule install.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 09:05:40 +02:00
parent a2e67d5405
commit 67f422539d
11 changed files with 396 additions and 5 deletions

View File

@@ -45,6 +45,14 @@ public sealed class LocalConfig
public LicenseConfig License { get; set; } = new();
/// <summary>
/// Configuration du déploiement de l'outil Report (page web locale embarquée
/// dans l'onglet "Statistiques") vers la racine XAMPP htdocs.
/// Le launcher copie le dossier <c>_report/</c> bundled dans chaque ZIP
/// PROSERVE vers <c>{HtdocsRoot}\{FolderName}</c> à chaque install.
/// </summary>
public ReportToolConfig ReportTool { get; set; } = new();
/// <summary>
/// Connexion à la base MySQL locale (XAMPP) utilisée par PROSERVE pour ses
/// statistiques. Le launcher s'en sert pour appliquer les migrations bundled
@@ -87,6 +95,20 @@ public sealed class DatabaseConfig
public bool AutoApplyMigrations { get; set; } = true;
}
/// <summary>
/// Paramètres de déploiement de l'outil Report local.
/// Le launcher cherche un sous-dossier <c>_report/</c> dans chaque ZIP PROSERVE
/// installé et le copie vers <c>{HtdocsRoot}\{FolderName}</c> via un rename
/// atomique (deploy en .new puis swap). L'URL de l'onglet Statistiques pointe
/// vers <c>http://localhost/{FolderName}/</c> ; les deux doivent matcher.
/// </summary>
public sealed class ReportToolConfig
{
public string HtdocsRoot { get; set; } = @"C:\xampp\htdocs";
public string FolderName { get; set; } = "ProserveReport";
public bool AutoDeploy { get; set; } = true;
}
public sealed class LicenseConfig
{
public string? EncryptedKey { get; set; }