- HTML 47.1%
- JavaScript 24.7%
- Python 23.9%
- CSS 3.1%
- Shell 1.1%
- Other 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
🚀 CI — Build & Publish / 🚀 CI (push) Successful in 2m42s
La release livre ses feuilles avec des fins de ligne mélangées ; sans règle, Git les normalisait et les empreintes n'étaient plus celles de la release. Le kit d'origine et sa copie servie passent en -text, comme le reste de la charte vendorée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .claude | ||
| .forgejo | ||
| .ressources | ||
| _projet | ||
| accounts | ||
| osm_portal | ||
| outils | ||
| templates | ||
| templates_catalog | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| conftest.py | ||
| docker-compose.yml | ||
| Dockerfile | ||
| manage.py | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| TUTORIEL.md | ||
OSM Portal v3 — portail interne de modèles de configuration CLI
Description
OSM Portal v3 est un outil interne Orange Business destiné à créer, maintenir et utiliser des modèles de configuration CLI pour les offres OSM. Il remplace progressivement des générateurs spécialisés codés en dur, comme Cisco OSM Gen, Ekinops BVPN OSM Gen et Ekinops OSM Gen, par une bibliothèque commune de modèles maintenables par des experts métier. Les techniciens de production ou de SAV recherchent un modèle publié, renseignent les valeurs client, prévisualisent la configuration générée, puis la copient ou la téléchargent. Le portail ne pousse pas les configurations sur les équipements et ne sauvegarde ni les valeurs saisies ni les configurations générées.
Schéma du projet
flowchart LR
U[Techniciens, auteurs et administrateurs] --> N[Navigateur web]
N --> A[Application Django]
A --> V[Pages HTML server-side\nOUDS Web 1.5.0 + Solaris]
A --> B[(PostgreSQL)]
A --> G[Moteur de génération\nblocs CLI + variables]
A --> S[Assets statiques vendorés]
A --> L[Logs stdout / stderr]
Ce schéma simplifie l’architecture cible décrite dans _projet/design.md : une application Django monolithique, rendue côté serveur, avec PostgreSQL pour les données métier et des assets Orange vendorés dans le dépôt.
Statut du projet
Le projet est en phase de cadrage et de spécification fonctionnelle. La vision produit, le cadrage technique et les principes UX/UI sont documentés dans _projet/. La stack cible est définie, mais aucune application v3 exécutable n’est encore présente à la racine du dépôt.
Aucune fonctionnalité v3 n’est encore archivée comme livrée dans _projet/features/implemented/. Vingt-huit fonctionnalités sont actuellement spécifiées dans _projet/features/wip/ et constituent la roadmap de développement.
Le dépôt contient aussi un corpus v1 sous .ressources/v1/OSM Portal/. Ce corpus sert de référence fonctionnelle pour comprendre l’existant et amorcer la future bibliothèque de modèles, mais il ne constitue pas l’application v3.
Fonctionnalités
Aucune fonctionnalité v3 n’est actuellement livrée et archivée dans _projet/features/implemented/.
Les fonctionnalités encore en cours de spécification ou de développement sont listées dans la section Roadmap. Elles ne doivent pas être considérées comme disponibles tant qu’elles restent dans _projet/features/wip/.
Stack technique
| Couche | Choix cible | Source |
|---|---|---|
| Langage principal | Python 3.12+ | _projet/design.md |
| Framework web | Django 5.x LTS | _projet/design.md |
| Rendu frontend | Templates Django server-side rendered | _projet/design.md |
| Interactions frontend | JavaScript natif en modules, sans framework SPA | _projet/design.md |
| Framework CSS | OUDS Web 1.5.0, construction pure, servie par l'application (osm_portal/static/ouds/) ; classes contrôlées par outils/verifier_ouds.py |
_projet/design.md, _projet/ux-ui.md |
| Icônes | Solaris Icons, sprite SVG servi par l'application | _projet/design.md, _projet/ux-ui.md |
| Base de données | PostgreSQL 16+ | _projet/design.md |
| ORM et migrations | Django ORM + migrations Django | _projet/design.md |
| Authentification | OpenID Connect auprès d'OMA Connect (Authlib, découverte, PKCE S256), SSO obligatoire, profils par le claim groups |
_projet/design.md, FEAT-29 |
| Tests | pytest + pytest-django | _projet/design.md |
| Qualité code | ruff | _projet/design.md |
| Packaging | Docker | _projet/design.md |
| Serveur applicatif | Gunicorn | _projet/design.md |
| Fichiers statiques | WhiteNoise ou service statique équivalent dans l’image applicative | _projet/design.md |
| CI/CD | Forgejo Actions, profil rapide sur dev, profil strict sur main |
.forgejo/workflows/README.md |
Prérequis
Pour consulter et maintenir le dépôt aujourd’hui :
- Git ;
- un accès au dépôt Forgejo ;
- un environnement capable de consulter des fichiers Markdown et HTML ;
- Docker, utile pour la CI et requis lorsque l’image applicative v3 sera créée.
Pour l’application cible, les prérequis techniques prévus sont :
- Python 3.12 ou supérieur ;
- Django 5.x LTS ;
- PostgreSQL 16 ou supérieur ;
- Docker pour construire et exécuter l’image applicative ;
- l’application déclarée chez OMA Connect (client confidentiel, porte d’entrée et rôles).
Les fichiers techniques applicatifs attendus (Dockerfile, manage.py, configuration Python, scripts de lancement, fichier .env.example, etc.) ne sont pas encore présents à la racine du dépôt.
Installation & Démarrage
Le projet v3 n’a pas encore d’application exécutable à installer ou démarrer.
Pour récupérer le dépôt et consulter le cadrage :
git clone https://git.bvcesctoulouse.com/OneXpertise/OSM-Portal.git
cd OSM-Portal
git switch dev
Documents principaux à lire :
_projet/vision.md— vision produit, public cible, périmètre et lots ;_projet/design.md— stack cible, architecture, modèle de données et contraintes techniques ;_projet/ux-ui.md— charte Orange, parcours, accessibilité et états d’interface ;_projet/features/features_summary.md— index des fonctionnalités en cours ;.forgejo/workflows/README.md— configuration et fonctionnement des workflows Forgejo Actions ;.ressources/v1/OSM Portal/— existant v1 utilisé comme référence fonctionnelle.
L’existant v1 peut être consulté localement en ouvrant .ressources/v1/OSM Portal/index.html dans un navigateur. Cette consultation sert à comprendre l’existant ; elle ne remplace pas l’application v3 à construire.
Configuration
Aucune configuration applicative v3 exécutable n’est encore fournie dans le dépôt.
Variables applicatives cibles à prévoir lors de l’implémentation :
| Nom | Rôle | Valeur par défaut |
|---|---|---|
DATABASE_URL |
Connexion PostgreSQL de l’application Django | Non définie |
DJANGO_SECRET_KEY |
Secret cryptographique Django | Non définie |
DJANGO_ALLOWED_HOSTS |
Hôtes autorisés pour l’application | Non défini |
DJANGO_DEBUG |
Activation du mode debug hors production | False attendu en production |
LOG_LEVEL |
Niveau de logs applicatifs | À définir par environnement |
OIDC_OP_ISSUER |
Issuer exact d'OMA Connect ; adresses et clés lues par découverte (/.well-known/openid-configuration) |
https://connect.infra.maquettes.orange-business.fr (composition) |
OIDC_RP_CLIENT_ID |
Identifiant de l'application osmportal chez OMA Connect |
Non défini |
OIDC_RP_CLIENT_SECRET / OIDC_RP_CLIENT_SECRET_FILE |
Secret client (de préférence par fichier) | Non défini |
OIDC_RP_REDIRECT_URI |
Adresse de retour exacte déclarée chez OMA Connect, sans barre finale | https://osm-portal.infra.maquettes.orange-business.fr/oidc/callback (composition) |
OIDC_AUTHOR_GROUPS, OIDC_ADMIN_GROUPS, OIDC_SUPERUSER_GROUPS |
Noms entiers des groupes de rôles (claim groups) ; sans rôle, lecteur |
GL-S-OSMPORTAL-AUTEUR-ALL, -ADMIN-ALL, -SUPERUSER-ALL (composition) |
OSM_SESSION_DUREE_HEURES |
Durée absolue d'une session ; les rôles sont relus ensuite | 8 |
DJANGO_SECRET_KEY_FILE |
Clé secrète Django lue dans un fichier, à la place de DJANGO_SECRET_KEY |
Non défini |
Sans DJANGO_DEBUG, le portail refuse de démarrer si la clé secrète ou un réglage OIDC manque (manage.py check, migrate et le lancement de gunicorn le disent).
Configuration CI/CD connue :
| Élément | Rôle | Documentation |
|---|---|---|
PIPELINE_UPSTREAM_URL |
Synchronisation du pipeline depuis le template upstream | .forgejo/workflows/README.md |
IMAGE_NAME |
Nom de l’image Docker publiée par la CI | .forgejo/workflows/README.md |
REGISTRY |
Registre cible pour l’image Docker | .forgejo/workflows/README.md |
REGISTRY_USERNAME / REGISTRY_TOKEN |
Authentification au registre | .forgejo/workflows/README.md |
COSIGN_PRIVATE_KEY / COSIGN_PASSWORD |
Signature optionnelle des images sur main |
.forgejo/workflows/README.md |
Roadmap
Fonctionnalités actuellement en cours dans _projet/features/wip/ :
| Fonctionnalité | Intitulé |
|---|---|
| FEAT-01 | Créer un modèle brouillon |
| FEAT-02 | Composer des blocs de configuration |
| FEAT-03 | Déclarer des variables simples |
| FEAT-04 | Renseigner les informations de classement d’un modèle |
| FEAT-05 | Sauvegarder un brouillon |
| FEAT-06 | Publier un modèle complet |
| FEAT-07 | Consulter la bibliothèque des modèles publiés |
| FEAT-08 | Générer une configuration depuis un modèle publié |
| FEAT-09 | Prévisualiser et copier la configuration générée |
| FEAT-10 | Suivre l’usage agrégé d’un modèle |
| FEAT-11 | Insérer des variables avec assistance |
| FEAT-12 | Ajouter une documentation d’usage au modèle |
| FEAT-13 | Télécharger la configuration générée |
| FEAT-14 | Définir des variables métier avancées |
| FEAT-15 | Appliquer des règles réseau et calculs courants |
| FEAT-16 | Conditionner les champs et les blocs générés |
| FEAT-17 | Tester un brouillon avec un jeu d’essai temporaire |
| FEAT-18 | Rechercher les modèles publiés par métadonnées |
| FEAT-19 | Collaborer avec des co-auteurs sur un modèle |
| FEAT-20 | Dupliquer un modèle publié en brouillon privé |
| FEAT-21 | Prévenir les doublons et harmoniser offres et tags |
| FEAT-22 | Organiser la zone auteur |
| FEAT-23 | Consulter l’historique d’un modèle |
| FEAT-24 | Comparer deux versions d’un modèle |
| FEAT-25 | Restaurer une version en nouveau brouillon |
| FEAT-26 | Archiver un modèle publié |
| FEAT-27 | Supprimer un modèle selon les droits |
| FEAT-28 | Administrer les modèles, offres et tags |
Découpage produit prévu dans _projet/vision.md :
- Lot 1A — brouillon sauvegardé ;
- Lot 1B — publication et génération ;
- Lot 1C — confort auteur et restitution ;
- Lot 2 — qualité métier et sécurité de génération ;
- Lot 3 — bibliothèque et collaboration ;
- Lot 4 — historique, archivage et gouvernance ;
- Lot 5 — évolutions secondaires ou futures.
Hors premier périmètre v3 :
- intégrations avancées au SI Orange Business et à ses API ;
- commentaires, tickets, pull requests ou propositions de correction intégrés au portail ;
- sauvegarde par défaut des configurations générées par les utilisateurs finaux ;
- import récurrent de la v1 comme fonctionnalité produit.
Licence / Confidentialité
OSM Portal v3 est un projet interne Orange Business. Les contenus manipulés peuvent concerner des configurations réseau et doivent être traités conformément aux exigences internes de confidentialité, de licence et de sécurité.
Les ressources OUDS Web et Orange Boosted Bootstrap, logos Orange et icônes Solaris présentes sous .ressources/ sont réservées à un usage dans le cadre de projets Orange. Les secrets tels que PSK, mots de passe ou clés peuvent apparaître dans les configurations générées, mais ne doivent pas être sauvegardés par le portail, ni journalisés, ni historisés.