ujusum:1-projet:11-artefacts-techniques
Différences
Ci-dessous, les différences entre deux révisions de la page.
| ujusum:1-projet:11-artefacts-techniques [2026/06/06 03:04] – créée 91.170.108.99 | ujusum:1-projet:11-artefacts-techniques [2026/06/06 03:04] (Version actuelle) – 91.170.108.99 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== | + | ====== |
| ===== Objectif ===== | ===== Objectif ===== | ||
| - | Ce document définit les standards d' | + | À ce stade, le projet dispose |
| - | * Le développement collaboratif | + | * du cahier des charges, |
| - | * Les déploiements automatisés | + | * de l' |
| - | * La qualité logicielle | + | * du modèle de données, |
| - | * L'observabilité | + | * du modèle UML, |
| - | * La scalabilité | + | * de l'architecture Frontend, |
| - | * La maintenance à long terme | + | * de l' |
| - | * L'exploitation SaaS | + | * du backlog, |
| + | * du plan DevOps. | ||
| + | |||
| + | L'étape suivante consiste à produire les artefacts techniques directement exploitables par les développeurs. | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Environnements ===== | + | L' |
| - | ^ Environnement | + | ^ Ordre ^ Livrable ^ Priorité |
| - | | Local | Développement | + | | 1 | Monorepo Frontend/ |
| - | | Dev | Intégration continue | + | | 2 | Configuration NestJS | Critique |
| - | | QA | Validation fonctionnelle | + | | 3 | Configuration NextJS | Critique |
| - | | Preprod | + | | 4 | OpenAPI YAML complet | Critique |
| - | | Production | + | | 5 | DTO TypeScript | Critique | |
| + | | 6 | Entités Prisma / TypeORM | Critique | | ||
| + | | 7 | Docker Compose | Haute | | ||
| + | | 8 | GitHub Actions | Haute | | ||
| + | | 9 | Helm Charts Kubernetes | Haute | | ||
| + | | 10 | Terraform Infrastructure | ||
| ---- | ---- | ||
| - | ===== Architecture | + | ====== Monorepo |
| < | < | ||
| - | Internet | + | rental-platform/ |
| + | ├── apps/ | ||
| │ | │ | ||
| - | + | │ | |
| - | ▼ | + | │ |
| - | + | ||
| - | Cloudflare | + | |
| │ | │ | ||
| - | + | ├── packages/ | |
| - | ▼ | + | |
| - | + | ||
| - | Load Balancer | + | |
| │ | │ | ||
| - | + | │ ├── | |
| - | ▼ | + | │ ├── |
| - | + | │ ├── | |
| - | Kubernetes Cluster | + | │ └── |
| - | + | ||
| - | ├── | + | |
| - | ├── | + | |
| - | ├── | + | |
| - | ├── | + | |
| │ | │ | ||
| - | + | ├── docs/ | |
| - | ▼ | + | |
| - | + | ||
| - | PostgreSQL | + | |
| │ | │ | ||
| - | + | ├── deployment/ | |
| - | ▼ | + | |
| - | + | ||
| - | Redis | + | |
| │ | │ | ||
| - | + | ├── scripts/ | |
| - | ▼ | + | │ |
| - | + | └── .github/ | |
| - | S3 Storage | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Objectif | + | ===== Arborescence |
| - | Préparer l' | + | < |
| + | apps/ | ||
| - | ---- | + | ├── src |
| - | + | │ | |
| - | ===== Backlog Sprint 0 ===== | + | ├── public |
| - | + | │ | |
| - | ==== Infrastructure ===== | + | ├── generated |
| - | + | │ | |
| - | * Création dépôt Git | + | ├── tests |
| - | * Création registry Docker | + | │ |
| - | * Création cluster Kubernetes | + | ├── package.json |
| - | * Création PostgreSQL | + | │ |
| - | * Création Redis | + | └── next.config.ts |
| - | * Création stockage S3 | + | </ |
| ---- | ---- | ||
| - | ==== Qualité | + | ====== Backend ====== |
| - | * ESLint | + | ===== Arborescence |
| - | * Prettier | + | |
| - | * Husky | + | |
| - | * Commitlint | + | |
| - | * SonarQube | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== CI/CD ===== | + | |
| - | + | ||
| - | * Build Frontend | + | |
| - | * Build Backend | + | |
| - | * Déploiement Dev | + | |
| - | * Déploiement QA | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ==== Monitoring ===== | + | |
| - | + | ||
| - | * Prometheus | + | |
| - | * Grafana | + | |
| - | * Loki | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Plan Scrum ====== | + | |
| - | + | ||
| - | ===== Sprint 1 ===== | + | |
| - | + | ||
| - | Authentification | + | |
| - | + | ||
| - | * Login | + | |
| - | * Register | + | |
| - | * JWT | + | |
| - | * RBAC | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 2 ===== | + | |
| - | + | ||
| - | Gestion utilisateurs | + | |
| - | + | ||
| - | * Profil | + | |
| - | * Documents | + | |
| - | * Notifications | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 3 ===== | + | |
| - | + | ||
| - | Catalogue Biens | + | |
| - | + | ||
| - | * CRUD | + | |
| - | * Photos | + | |
| - | * Équipements | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 4 ===== | + | |
| - | + | ||
| - | Disponibilités | + | |
| - | + | ||
| - | * Calendrier | + | |
| - | * Blocages | + | |
| - | * Tarifs | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 5 ===== | + | |
| - | + | ||
| - | Recherche | + | |
| - | + | ||
| - | * Filtres | + | |
| - | * Carte | + | |
| - | * SEO | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 6 ===== | + | |
| - | + | ||
| - | Réservation | + | |
| - | + | ||
| - | * Création | + | |
| - | * Modification | + | |
| - | * Annulation | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 7 ===== | + | |
| - | + | ||
| - | Contrats | + | |
| - | + | ||
| - | * Génération PDF | + | |
| - | * Signature | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 8 ===== | + | |
| - | + | ||
| - | Paiements | + | |
| - | + | ||
| - | * Stripe | + | |
| - | * Facturation | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 9 ===== | + | |
| - | + | ||
| - | Portail propriétaire | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 10 ===== | + | |
| - | + | ||
| - | CRM | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 11 ===== | + | |
| - | + | ||
| - | Messagerie | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 12 ===== | + | |
| - | + | ||
| - | Notifications | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 13 ===== | + | |
| - | + | ||
| - | Reporting | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 14 ===== | + | |
| - | + | ||
| - | Administration | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 15 ===== | + | |
| - | + | ||
| - | Optimisations UX | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 16 ===== | + | |
| - | + | ||
| - | Sécurité avancée | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 17 ===== | + | |
| - | + | ||
| - | Tests de charge | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 18 ===== | + | |
| - | + | ||
| - | Recette | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 19 ===== | + | |
| - | + | ||
| - | Pré-production | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Sprint 20 ===== | + | |
| - | + | ||
| - | Mise en production | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Convention de développement ====== | + | |
| - | + | ||
| - | ===== Branches | + | |
| < | < | ||
| - | main | + | apps/ |
| - | develop | + | ├── src |
| - | + | │ | |
| - | feature/* | + | ├── prisma |
| - | + | │ | |
| - | hotfix/* | + | ├── test |
| - | + | │ | |
| - | release/* | + | ├── package.json |
| + | │ | ||
| + | └── nest-cli.json | ||
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Convention de nommage | + | ====== OpenAPI ====== |
| - | ==== Features | + | ===== Objectif |
| - | < | + | L' |
| - | feature/ | + | |
| - | feature/ | + | Tout est généré à partir de lui : |
| - | </ | + | |
| - | ---- | + | * SDK |
| - | + | * DTO | |
| - | ==== Hotfix ===== | + | * Validation |
| - | + | * Swagger | |
| - | < | + | * Documentation |
| - | hotfix/ | + | |
| - | </ | + | |
| ---- | ---- | ||
| - | ====== GitFlow ====== | + | ===== Livrable attendu |
| - | + | ||
| - | ===== Cycle ===== | + | |
| < | < | ||
| - | feature | + | docs/ |
| - | ↓ | + | openapi.yaml |
| + | </ | ||
| - | develop | + | Taille estimée : |
| - | ↓ | + | * 8000 à 12000 lignes |
| - | + | ||
| - | release | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | main | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | tag | + | |
| - | </ | + | |
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Format | + | ===== Frontend |
| - | < | + | < |
| - | type(scope): | + | openapi-generator-cli generate \ |
| + | -g typescript-fetch | ||
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Exemples | + | ===== Résultat |
| < | < | ||
| - | feat(auth): add login endpoint | + | packages/ |
| - | feat(property): | + | ├── api.ts |
| - | + | ├── models.ts | |
| - | fix(payment): | + | ├── services.ts |
| - | + | └── index.ts | |
| - | refactor(crm): | + | |
| - | + | ||
| - | test(reservation): | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Pipeline Backend | + | ===== Source |
| - | < | + | Le schéma PostgreSQL précédemment défini. |
| - | Git Push | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Lint | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Unit Tests | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Build | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Docker Build | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Security Scan | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Deploy Dev | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Deploy QA | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Deploy Production | + | |
| - | </ | + | |
| ---- | ---- | ||
| - | ===== Pipeline Frontend | + | ===== Exemple |
| - | < | + | < |
| - | Git Push | + | model Property { |
| - | ↓ | + | id String |
| - | Lint | + | code String |
| - | ↓ | + | title |
| - | Type Check | + | status |
| - | ↓ | + | ownerId |
| - | Unit Tests | + | owner Owner @relation( |
| + | fields: [ownerId], | ||
| + | references: [id] | ||
| + | ) | ||
| - | ↓ | + | createdAt |
| - | Build | + | updatedAt |
| - | ↓ | + | } |
| - | + | ||
| - | Deploy | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Backend | + | ===== Exemple |
| - | < | + | < |
| - | FROM node: | + | @Entity(" |
| + | export class Property { | ||
| - | WORKDIR /app | + | @PrimaryGeneratedColumn(" |
| + | id: string; | ||
| - | COPY . . | + | @Column() |
| + | title: string; | ||
| - | RUN npm install | + | @Column() |
| + | status: string; | ||
| - | RUN npm run build | + | } |
| - | + | ||
| - | CMD [" | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Frontend | + | ====== Docker Compose ====== |
| - | <code docker> | + | ===== Objectif ===== |
| - | FROM node: | + | |
| - | RUN npm install | + | Démarrage local complet. |
| - | + | ||
| - | RUN npm run build | + | |
| - | + | ||
| - | CMD [" | + | |
| - | </ | + | |
| ---- | ---- | ||
| - | |||
| - | ====== Kubernetes ====== | ||
| ===== Services ===== | ===== Services ===== | ||
| Ligne 485: | Ligne 238: | ||
| redis | redis | ||
| - | worker | + | mailhog |
| - | scheduler | + | minio |
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Autoscaling | + | ===== Commande |
| - | + | ||
| - | <code yaml> | + | |
| - | minReplicas: | + | |
| - | maxReplicas: | + | <code bash> |
| + | docker compose up -d | ||
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Pyramide | + | ===== Pipeline Frontend |
| < | < | ||
| - | E2E | + | lint |
| - | ▲ | + | typecheck |
| - | Integration | + | test |
| - | ▲ | + | build |
| - | Unit Tests | + | docker |
| + | |||
| + | deploy | ||
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Couverture ===== | + | ===== Pipeline Backend |
| - | + | ||
| - | ^ Type ^ Objectif ^ | + | |
| - | | Unit | 80 % | | + | |
| - | | Integration | 70 % | | + | |
| - | | E2E | Parcours critiques | | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Outils | + | |
| < | < | ||
| - | Vitest | + | lint |
| - | Jest | + | unit-test |
| - | Playwright | + | integration-test |
| - | Supertest | + | build |
| - | </ | + | |
| - | ---- | + | docker |
| - | ====== Observabilité ====== | + | deploy |
| - | + | ||
| - | ===== Logs ===== | + | |
| - | + | ||
| - | ===== Format ===== | + | |
| - | + | ||
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Centralisation | + | ====== Helm Charts ====== |
| - | < | + | ===== Structure |
| - | NestJS | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Loki | + | |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | Grafana | + | |
| - | </ | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Métriques ====== | + | |
| - | + | ||
| - | ===== Backend ===== | + | |
| - | + | ||
| - | * Temps réponse API | + | |
| - | * Nombre requêtes | + | |
| - | * Taux erreurs | + | |
| - | * Temps SQL | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Business ===== | + | |
| - | + | ||
| - | * Réservations | + | |
| - | * Contrats signés | + | |
| - | * Paiements | + | |
| - | * Revenus | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Traces ====== | + | |
| - | + | ||
| - | ===== OpenTelemetry | + | |
| < | < | ||
| - | Frontend | + | deployment/ |
| - | ↓ | + | helm/ |
| - | API | + | ├── frontend |
| - | ↓ | + | ├── backend |
| - | Database | + | ├── postgres |
| - | ↓ | + | ├── redis |
| - | Stripe | + | └── ingress |
| - | + | ||
| - | ↓ | + | |
| - | + | ||
| - | SMTP | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | + | ||
| - | ===== Critique ===== | + | |
| - | + | ||
| - | * API indisponible | + | |
| - | * PostgreSQL indisponible | + | |
| - | * Redis indisponible | + | |
| - | * Erreurs Stripe | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Avertissement ===== | + | |
| - | + | ||
| - | * CPU > 80 % | + | |
| - | * RAM > 80 % | + | |
| - | * Temps réponse > 2s | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Sauvegardes ====== | + | |
| - | + | ||
| - | ===== PostgreSQL ===== | + | |
| - | + | ||
| - | * Quotidienne | + | |
| - | * Conservation 30 jours | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== S3 ===== | + | |
| - | + | ||
| - | * Versionning activé | + | |
| - | * Réplication | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Sécurité ====== | + | |
| - | + | ||
| - | ===== Auth ===== | + | |
| - | + | ||
| - | * JWT | + | |
| - | * Refresh Token | + | |
| - | * Rotation | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Protection ===== | + | |
| - | + | ||
| - | * HTTPS | + | |
| - | * CSP | + | |
| - | * CORS | + | |
| - | * Rate Limiting | + | |
| - | * WAF | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Audit ===== | + | |
| - | + | ||
| - | Toutes les actions sont historisées : | + | |
| - | + | ||
| - | * Connexions | + | |
| - | * Paiements | + | |
| - | * Contrats | + | |
| - | * Modifications | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== SaaS Multi-tenant ====== | + | |
| - | + | ||
| - | ===== Stratégie ===== | + | |
| - | + | ||
| - | Un tenant = une agence. | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ===== Isolation ===== | + | |
| - | + | ||
| - | Option retenue : | + | |
| < | < | ||
| - | shared database | + | DATABASE_URL |
| - | + | + | REDIS_URL |
| - | tenant_id | + | JWT_SECRET |
| - | </ | + | |
| - | Toutes les tables métiers : | + | SMTP_HOST |
| - | <code sql> | + | S3_ENDPOINT |
| - | tenant_id UUID NOT NULL | + | |
| - | </ | + | |
| - | ---- | + | STRIPE_SECRET |
| - | + | ||
| - | ===== Avantages ===== | + | |
| - | + | ||
| - | * Faible coût | + | |
| - | * Maintenance simplifiée | + | |
| - | * Scalabilité horizontale | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Migration Microservices ====== | + | |
| - | + | ||
| - | ===== Monolithe modulaire ===== | + | |
| - | + | ||
| - | Version initiale : | + | |
| - | + | ||
| - | < | + | |
| - | NestJS Modular Monolith | + | |
| </ | </ | ||
| ---- | ---- | ||
| - | ===== Extraction future | + | ====== Repository Git ====== |
| - | Ordre recommandé : | + | ===== Branches ===== |
| < | < | ||
| - | 1 - Notification Service | + | main |
| - | 2 - CRM Service | + | develop |
| - | 3 - Reporting Service | + | feature/* |
| - | 4 - Payment Service | + | release/* |
| - | 5 - Reservation Service | + | hotfix/* |
| </ | </ | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Livrables ===== | + | Les documents qui n'ont pas encore été détaillés et qui représentent le plus de valeur sont : |
| - | * Manuel administrateur | + | * OpenAPI YAML complet (250 endpoints) |
| - | * Manuel exploitation | + | * Prisma Schema complet (80+ tables) |
| - | * Manuel sauvegarde | + | * Entités NestJS TypeORM |
| - | * Manuel restauration | + | * Monorepo Turborepo |
| - | * Procédure incidents | + | * Docker Compose complet |
| - | * Procédure déploiement | + | * GitHub Actions complètes |
| + | * Helm Charts Kubernetes | ||
| + | * Terraform Infrastructure AWS/OVH | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ^ KPI ^ Objectif ^ | + | Le prochain document à produire devrait être : |
| - | | Disponibilité | 99.9 % | | + | |
| - | | Temps réponse API | < 2 sec | | + | |
| - | | Temps réponse DB | < 200 ms | | + | |
| - | | Taux erreur | < 1 % | | + | |
| - | | Couverture tests | > 80 % | | + | |
| - | ---- | + | **OpenAPI YAML complet** |
| - | ====== Livrables finaux du projet ====== | + | car il permettra ensuite de générer automatiquement : |
| - | * Cahier des charges | + | * SDK Frontend |
| - | * Architecture fonctionnelle | + | * DTO NestJS |
| - | * Architecture technique | + | * Validation Zod |
| - | * Schéma PostgreSQL | + | * Swagger |
| - | * UML complet | + | * Documentation API |
| - | * Architecture Hexagonale | + | * Mock Server |
| - | * OpenAPI 3.1 | + | * Tests contractuels |
| - | * Backlog Agile | + | |
| - | * UX/UI | + | |
| - | * DevOps & Industrialisation | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | ====== Niveau de maturité atteint ====== | + | |
| - | + | ||
| - | Le projet dispose désormais d'un niveau de spécification comparable à celui attendu avant le lancement d'un développement professionnel : | + | |
| - | + | ||
| - | * Vision produit | + | |
| - | * Architecture logicielle | + | |
| - | * Architecture données | + | |
| - | * Architecture frontend | + | |
| - | * Architecture backend | + | |
| - | * Processus DevOps | + | |
| - | * Exploitation SaaS | + | |
| - | * Roadmap Scrum | + | |
| - | + | ||
| - | L' | + | |
| - | + | ||
| - | * Repository Git initial | + | |
| - | * Monorepo | + | |
| - | * Configuration | + | |
| - | * Configuration NextJS | + | |
| - | * Docker Compose | + | |
| - | * Helm Charts Kubernetes | + | |
| - | * OpenAPI YAML complet | + | |
| - | * DTO TypeScript | + | |
| - | * Entités PostgreSQL / Prisma / TypeORM | + | |
| - | * Pipelines GitHub Actions | + | |
| - | afin de démarrer le développement avec une base de code opérationnelle. | + | et deviendra la véritable source |
ujusum/1-projet/11-artefacts-techniques.1780707840.txt.gz · Dernière modification : 2026/06/06 03:04 de 91.170.108.99