Softic.Academy — conception validée (03/11/2026)
هذا المحتوى غير متوفر بعد باللغة العربية؛ يُعرض باللغة 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
- L'outil lit
academy.json, construit l'instantané (métadonnées + empreintes, sans les corps ni les fichiers). POST /api/v1/ingest/runs: le portail compare à ce qu'il connaît et renvoie le plan (textes et fichiers à envoyer, retraits).- Textes par lots (
PUT .../translations), fichiers par morceaux (PUT .../media/{id}/chunks/{n}puiscompleteavec contrôle d'empreinte). POST .../commit: application en une transaction (produit, contenus, médias déplacés dans le magasin, événements), journal de l'envoi.- 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 |