SOFTIC Academy

Softic.Academy — conception validée (03/11/2026)

Updated on 11/6/2026

This content is not available in English yet; it is shown in Français.

Centre de formation et de support SOFTIC, accessible à https://academy.softic.io et relié au site https://softic.io.

1. Objectifs

  • Un portail unique pour toutes les applications SOFTIC : guides d'utilisation, vidéos de présentation et de formation, fiches de dépannage, notes de version.
  • Alimenté automatiquement par les projets : chaque solution publie ce qu'elle contient déjà (manuel intégré, catalogue vidéo) plus deux dossiers légers (dépannage, journal des versions). Le portail ne se remplit jamais à la main.
  • Les clients s'abonnent et reçoivent un e-mail à chaque mise à jour des produits qu'ils suivent, et à l'arrivée d'un nouveau produit (lot 2).
  • Accès public (référencement, vitrine du support), quatre langues : fr (référence), en, ar, pt.

2. Décisions

Sujet Décision
Nom / adresse Softic.Academy — academy.softic.io (alias possible support.softic.io en redirection)
Accès Public ; un produit n'apparaît que si son manifeste dit "public": true et que l'administrateur le laisse publié
Source de vérité Les projets (manifeste academy.json à la racine de chaque solution)
Déclencheurs Fin de chaque script de publication (deploy\Publish-Academy.ps1) + agent planifié toutes les 10 min
Formats lus manual.json (Softic Help), catalog.json (build-catalog.js), dossiers Markdown à en-tête, CHANGELOG.md
Envoi Par différence d'empreintes SHA-256 : seuls les textes et fichiers modifiés transitent ; vidéos par morceaux de 8 Mo
Notifications Lot 2 : digest quotidien 8 h (Tunis) par défaut, fenêtre de sécurité de 2 h, Microsoft Graph depuis academy@softic.com.tn
Interface Pages publiques MVC (référencement, pas de circuit SignalR par visiteur) ; administration Blazor Server + DevExpress 24.1 (lot 1C)
Recherche / IA Lot 3 : Lucene.NET, assistant Softic IA avec suivi des coûts
Hébergement VPS IIS : site SofticAcademy, certificat *.softic.io (magasin WebHosting), base Softic_Academy, médias dans C:\Softic\Academy\Media

3. Architecture

Vos solutions (VPS de dev)                                academy.softic.io (IIS)
+---------------------------------------------+           +--------------------------------------+
| Softic.GMAO\                                |  HTTPS    | Softic.Academy.Web                   |
|   academy.json           <- manifeste       |  cle API  |   /api/v1/ingest   (plan par delta)  |
|   src\...\Help\manual.json  (chapitres)     | --------> |   produits / guides / videos /       |
|   docs\support\*.md         (depannage)     |           |   depannage / versions               |
|   docs\CHANGELOG.md         (versions)      |           |        |  evenements de changement   |
|   C:\Softic\Gmao\Training\catalog.json      |           |        v                             |
+---------------------------------------------+           |   Notifications (lot 2)              |
  ^ Publish-Academy.ps1 (fin de deploy)                   |   Site public 4 langues, /admin,     |
  ^ Agent Academy (tache planifiee, 10 min)               |   /media (lecture par plages)        |
                                                          +--------------------------------------+

Solution Softic.Academy.sln (net8.0) :

Projet Rôle
Softic.Academy.Domain Entités et énumérations (Product, ContentItem, ContentTranslation, MediaFile, IngestRun, ChangeEvent, ApiKey, Setting)
Softic.Academy.Engine Manifeste, adaptateurs, empreintes, plan par différence, protocole d'ingestion — logique pure, testée
Softic.Academy.Data EF Core 8 / SQL Server, schéma academy, migrations
Softic.Academy.Shared Ressources .resx fr/en/ar/pt
Softic.Academy.Web Site public (MVC), API d'ingestion et API publique, commandes d'exploitation ; administration Blazor au lot 1C
Softic.Academy.Publisher Exe de publication et agent (publish, explain, ping, agent, register)
Softic.Academy.Tests Tests xUnit du moteur

4. Modèle de données (schéma academy)

  • Products : code (GMAO), slug (gmao), nom, public (manifeste) / publié (admin), catégorie, version courante, langues, adresses, logo.
  • ProductTexts : résumé et description par langue.
  • ContentItems : clé stable (guide:ordres-de-travail, video:V03, ts:cle-api, release:1.18.0), type, slug, ordre, groupe, mots-clés, versions concernées, durée, origine, visibilité admin, dates (première vue, dernier changement, retrait).
  • ContentTranslations : titre, résumé, corps Markdown et empreinte par langue.
  • MediaFiles : vidéos, sous-titres, vignettes, images des guides, logo — chemin de stockage produit/..., taille, empreinte.
  • IngestRuns : journal de chaque envoi (source, machine, version, compteurs, compte rendu).
  • ChangeEvents : nouveautés (produit ajouté / publié, version, contenu ajouté / modifié / retiré) — base des notifications.
  • ApiKeys : empreinte de la clé, portée (un produit ou tous), dernier usage, révocation.
  • Settings : paramètres administrables.

Les contenus retirés d'un projet sont conservés avec une date de retrait (historique et notification), jamais supprimés.

5. Flux d'un envoi

  1. L'outil lit academy.json, construit l'instantané (métadonnées + empreintes, sans les corps ni les fichiers).
  2. POST /api/v1/ingest/runs : le portail compare à ce qu'il connaît et renvoie le plan (textes et fichiers à envoyer, retraits).
  3. Textes par lots (PUT .../translations), fichiers par morceaux (PUT .../media/{id}/chunks/{n} puis complete avec contrôle d'empreinte).
  4. POST .../commit : application en une transaction (produit, contenus, médias déplacés dans le magasin, événements), journal de l'envoi.
  5. L'outil mémorise l'empreinte envoyée ; l'agent ne rappelle le portail que si elle change.

Un envoi non validé expire après 2 h ; un seul envoi actif par produit.

6. Lots

Lot Contenu Sprints
1 — Socle et portail public 1A ingestion (livré) · 1B pages publiques (livré) (fiche produit, lecture des guides, lecteur vidéo, dépannage, versions, nouveautés, flux RSS) · 1C administration DevExpress (produits, contenus, ingestions, clés) + exploitation 1A, 1B, 1C
2 — Abonnements et notifications 2A inscription, confirmation, préférences, moteur d'événements, récapitulatifs, Graph, fenêtre de 2 h (livré) · 2B administration des abonnés et des envois (avec 1C) 2A, 2B
3 — Recherche et Softic IA Lucene.NET (guides, dépannages, sous-titres), facettes, assistant avec suivi des coûts, recherches sans résultat 3A, 3B
4 — À la carte intégration softic.io (menu, bloc Ressources, redirection /support), contenus réservés, demandes de support, Azure Blob selon besoin