ujusum:3-codage:1-repository:2-prisma-schema
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| ujusum:3-codage:1-repository:2-prisma-schema [2026/06/07 19:00] – 91.170.108.99 | ujusum:3-codage:1-repository:2-prisma-schema [2026/06/07 19:04] (Version actuelle) – 91.170.108.99 | ||
|---|---|---|---|
| Ligne 7599: | Ligne 7599: | ||
| ---- | ---- | ||
| - | ====== | + | ====== |
| - | ===== Phase 2-M ===== | + | ===== Objectif |
| - | Internationalisation | + | Transformer la plateforme en solution SaaS internationale capable de gérer : |
| + | |||
| + | * Plusieurs langues | ||
| + | * Plusieurs devises | ||
| + | * Plusieurs pays | ||
| + | * Plusieurs fuseaux horaires | ||
| + | * Plusieurs régions d' | ||
| + | * Plusieurs marques | ||
| + | * Plusieurs réseaux d' | ||
| + | * Plusieurs juridictions | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 15 — Réseau d' | ||
| + | |||
| + | Sprint 20 — Internationalisation | ||
| + | |||
| + | Enterprise SaaS | ||
| + | |||
| + | Commercialisation internationale | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Architecture ====== | ||
| + | |||
| + | ===== Modèles ===== | ||
| < | < | ||
| Ligne 7623: | Ligne 7650: | ||
| </ | </ | ||
| - | Cette phase couvrira : | + | ---- |
| - | * Sprint 15 — Multi-sites & Réseau | + | ====== Country ====== |
| - | * Sprint 20 — Internationalisation | + | |
| - | | + | ===== Référentiel pays ===== |
| - | | + | |
| - | | + | Norme ISO 3166. |
| - | * Commercialisation internationale | + | |
| + | <code prisma> | ||
| + | model Country { | ||
| + | |||
| + | code String @id | ||
| + | |||
| + | iso3 String @unique | ||
| + | |||
| + | name String | ||
| + | |||
| + | nativeName | ||
| + | |||
| + | phonePrefix | ||
| + | |||
| + | euMember | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | regions | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | FR | ||
| + | |||
| + | BE | ||
| + | |||
| + | CH | ||
| + | |||
| + | ES | ||
| + | |||
| + | IT | ||
| + | |||
| + | DE | ||
| + | |||
| + | UK | ||
| + | |||
| + | US | ||
| + | |||
| + | CA | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Currency ====== | ||
| + | |||
| + | ===== Référentiel devises ===== | ||
| + | |||
| + | Norme ISO 4217. | ||
| + | |||
| + | <code prisma> | ||
| + | model Currency { | ||
| + | |||
| + | code String @id | ||
| + | |||
| + | numericCode | ||
| + | |||
| + | name String | ||
| + | |||
| + | symbol | ||
| + | |||
| + | decimalPlaces | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | rates | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | EUR | ||
| + | |||
| + | USD | ||
| + | |||
| + | GBP | ||
| + | |||
| + | CHF | ||
| + | |||
| + | CAD | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Language ====== | ||
| + | |||
| + | ===== Référentiel langues ===== | ||
| + | |||
| + | Norme ISO 639. | ||
| + | |||
| + | <code prisma> | ||
| + | model Language { | ||
| + | |||
| + | code String @id | ||
| + | |||
| + | name String | ||
| + | |||
| + | nativeName | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | translations | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | fr | ||
| + | |||
| + | en | ||
| + | |||
| + | de | ||
| + | |||
| + | es | ||
| + | |||
| + | it | ||
| + | |||
| + | nl | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Timezone ====== | ||
| + | |||
| + | ===== Fuseaux horaires ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model Timezone { | ||
| + | |||
| + | id String @id | ||
| + | |||
| + | displayName | ||
| + | |||
| + | utcOffset | ||
| + | |||
| + | active | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | Europe/ | ||
| + | |||
| + | Europe/ | ||
| + | |||
| + | America/ | ||
| + | |||
| + | America/ | ||
| + | |||
| + | Asia/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== CurrencyRate ====== | ||
| + | |||
| + | ===== Taux de change ===== | ||
| + | |||
| + | Historisation des taux. | ||
| + | |||
| + | <code prisma> | ||
| + | model CurrencyRate { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | fromCurrencyCode | ||
| + | |||
| + | toCurrencyCode | ||
| + | |||
| + | rate Decimal @db.Decimal(18, | ||
| + | |||
| + | rateDate | ||
| + | |||
| + | source | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | fromCurrency | ||
| + | @relation( | ||
| + | " | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | toCurrency | ||
| + | @relation( | ||
| + | " | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | fromCurrencyCode, | ||
| + | toCurrencyCode, | ||
| + | rateDate | ||
| + | ]) | ||
| + | |||
| + | @@index([rateDate]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Translation ====== | ||
| + | |||
| + | ===== Traductions ===== | ||
| + | |||
| + | Permet l' | ||
| + | |||
| + | <code prisma> | ||
| + | model Translation { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | languageCode | ||
| + | |||
| + | namespace | ||
| + | |||
| + | translationKey | ||
| + | |||
| + | translationValue | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | updatedAt | ||
| + | |||
| + | language | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | languageCode, | ||
| + | namespace, | ||
| + | translationKey | ||
| + | ]) | ||
| + | |||
| + | @@index([namespace]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | property.title | ||
| + | |||
| + | reservation.confirm | ||
| + | |||
| + | payment.invoice | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Region ====== | ||
| + | |||
| + | ===== Régions d' | ||
| + | |||
| + | Permet la gestion géographique. | ||
| + | |||
| + | <code prisma> | ||
| + | model Region { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | countryCode | ||
| + | |||
| + | code String | ||
| + | |||
| + | name String | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | country | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | countryCode, | ||
| + | code | ||
| + | ]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | FR_OCCITANIE | ||
| + | |||
| + | FR_PACA | ||
| + | |||
| + | FR_IDF | ||
| + | |||
| + | ES_CATALUNYA | ||
| + | |||
| + | US_FLORIDA | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== EnterpriseLicense ====== | ||
| + | |||
| + | ===== Licence SaaS Enterprise ===== | ||
| + | |||
| + | Gestion des déploiements internationaux. | ||
| + | |||
| + | <code prisma> | ||
| + | model EnterpriseLicense { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | licenseKey | ||
| + | |||
| + | edition | ||
| + | |||
| + | maxUsers | ||
| + | |||
| + | maxProperties | ||
| + | |||
| + | maxAgencies | ||
| + | |||
| + | validFrom | ||
| + | |||
| + | validTo | ||
| + | |||
| + | active | ||
| + | |||
| + | features | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([active]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== EnterpriseEdition ===== | ||
| + | |||
| + | <code prisma> | ||
| + | enum EnterpriseEdition { | ||
| + | |||
| + | COMMUNITY | ||
| + | |||
| + | PROFESSIONAL | ||
| + | |||
| + | BUSINESS | ||
| + | |||
| + | ENTERPRISE | ||
| + | |||
| + | ENTERPRISE_PLUS | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Tenant ====== | ||
| + | |||
| + | ===== Tenant ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | countryCode String? | ||
| + | |||
| + | currencyCode String? | ||
| + | |||
| + | languageCode String? | ||
| + | |||
| + | timezoneId String? | ||
| + | |||
| + | enterpriseLicense EnterpriseLicense? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relations ===== | ||
| + | |||
| + | <code prisma> | ||
| + | country Country? | ||
| + | |||
| + | currency Currency? | ||
| + | |||
| + | language Language? | ||
| + | |||
| + | timezone Timezone? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Property ====== | ||
| + | |||
| + | ===== Property ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | currencyCode String? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relation ===== | ||
| + | |||
| + | <code prisma> | ||
| + | currency Currency? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Reservation ====== | ||
| + | |||
| + | ===== Reservation ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | currencyCode String? | ||
| + | exchangeRate Decimal? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cas d' | ||
| + | |||
| + | ===== Multi-langues ===== | ||
| + | |||
| + | < | ||
| + | FR | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | EN | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | DE | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | ES | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Multi-devises ===== | ||
| + | |||
| + | < | ||
| + | EUR | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | USD | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | GBP | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | CHF | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Multi-régions ===== | ||
| + | |||
| + | < | ||
| + | France | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Occitanie | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Agence | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Biens | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réseau | ||
| + | |||
| + | < | ||
| + | Tenant | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-marques | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-pays | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-régions | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Validation ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma format | ||
| + | |||
| + | npx prisma validate | ||
| + | |||
| + | npx prisma generate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Migration ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma migrate dev \ | ||
| + | --name internationalization_multiregion | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Fonctionnalités couvertes ====== | ||
| + | |||
| + | ===== Internationalisation ===== | ||
| + | |||
| + | < | ||
| + | Multi-langues | ||
| + | |||
| + | Multi-devises | ||
| + | |||
| + | Multi-fuseaux | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réseau ===== | ||
| + | |||
| + | < | ||
| + | Multi-pays | ||
| + | |||
| + | Multi-régions | ||
| + | |||
| + | Multi-agences | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Enterprise ===== | ||
| + | |||
| + | < | ||
| + | Licensing | ||
| + | |||
| + | Commercialisation | ||
| + | |||
| + | SaaS mondial | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== État du schéma ====== | ||
| + | |||
| + | Après Phase 2-M : | ||
| + | |||
| + | < | ||
| + | ≈ 101 modèles Prisma | ||
| + | </ | ||
| + | |||
| + | avec les domaines : | ||
| + | |||
| + | < | ||
| + | Core | ||
| + | |||
| + | Security | ||
| + | |||
| + | Properties | ||
| + | |||
| + | Owners | ||
| + | |||
| + | Customers | ||
| + | |||
| + | Reservations | ||
| + | |||
| + | Contracts | ||
| + | |||
| + | Payments | ||
| + | |||
| + | CRM | ||
| + | |||
| + | Messaging | ||
| + | |||
| + | Marketing | ||
| + | |||
| + | Automation | ||
| + | |||
| + | Governance | ||
| + | |||
| + | OTA | ||
| + | |||
| + | Revenue Management | ||
| + | |||
| + | Enterprise Security | ||
| + | |||
| + | Internationalization | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 2-M — Internationalisation & Multi-régions ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Transformer la plateforme en solution SaaS internationale capable de gérer : | ||
| + | |||
| + | * Plusieurs langues | ||
| + | * Plusieurs devises | ||
| + | * Plusieurs pays | ||
| + | * Plusieurs fuseaux horaires | ||
| + | * Plusieurs régions d' | ||
| + | * Plusieurs marques | ||
| + | * Plusieurs réseaux d' | ||
| + | * Plusieurs juridictions | ||
| + | |||
| + | Cette phase couvre : | ||
| + | |||
| + | < | ||
| + | Sprint 15 — Réseau d' | ||
| + | |||
| + | Sprint 20 — Internationalisation | ||
| + | |||
| + | Enterprise SaaS | ||
| + | |||
| + | Commercialisation internationale | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Architecture ====== | ||
| + | |||
| + | ===== Modèles ===== | ||
| + | |||
| + | < | ||
| + | Country | ||
| + | |||
| + | Currency | ||
| + | |||
| + | Language | ||
| + | |||
| + | Timezone | ||
| + | |||
| + | CurrencyRate | ||
| + | |||
| + | Translation | ||
| + | |||
| + | Region | ||
| + | |||
| + | EnterpriseLicense | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Country ====== | ||
| + | |||
| + | ===== Référentiel pays ===== | ||
| + | |||
| + | Norme ISO 3166. | ||
| + | |||
| + | <code prisma> | ||
| + | model Country { | ||
| + | |||
| + | | ||
| + | |||
| + | iso3 String @unique | ||
| + | |||
| + | name String | ||
| + | |||
| + | nativeName | ||
| + | |||
| + | phonePrefix | ||
| + | |||
| + | euMember | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | regions | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | FR | ||
| + | |||
| + | BE | ||
| + | |||
| + | CH | ||
| + | |||
| + | ES | ||
| + | |||
| + | IT | ||
| + | |||
| + | DE | ||
| + | |||
| + | UK | ||
| + | |||
| + | US | ||
| + | |||
| + | CA | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Currency ====== | ||
| + | |||
| + | ===== Référentiel | ||
| + | |||
| + | Norme ISO 4217. | ||
| + | |||
| + | <code prisma> | ||
| + | model Currency { | ||
| + | |||
| + | | ||
| + | |||
| + | numericCode | ||
| + | |||
| + | name String | ||
| + | |||
| + | symbol | ||
| + | |||
| + | decimalPlaces | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | rates | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | EUR | ||
| + | |||
| + | USD | ||
| + | |||
| + | GBP | ||
| + | |||
| + | CHF | ||
| + | |||
| + | CAD | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Language ====== | ||
| + | |||
| + | ===== Référentiel | ||
| + | |||
| + | Norme ISO 639. | ||
| + | |||
| + | <code prisma> | ||
| + | model Language { | ||
| + | |||
| + | | ||
| + | |||
| + | name String | ||
| + | |||
| + | nativeName | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | translations | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | fr | ||
| + | |||
| + | en | ||
| + | |||
| + | de | ||
| + | |||
| + | es | ||
| + | |||
| + | it | ||
| + | |||
| + | nl | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Timezone ====== | ||
| + | |||
| + | ===== Fuseaux horaires ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model Timezone { | ||
| + | |||
| + | id String @id | ||
| + | |||
| + | displayName | ||
| + | |||
| + | utcOffset | ||
| + | |||
| + | active | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | Europe/ | ||
| + | |||
| + | Europe/ | ||
| + | |||
| + | America/ | ||
| + | |||
| + | America/ | ||
| + | |||
| + | Asia/ | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== CurrencyRate ====== | ||
| + | |||
| + | ===== Taux de change ===== | ||
| + | |||
| + | Historisation des taux. | ||
| + | |||
| + | <code prisma> | ||
| + | model CurrencyRate { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | fromCurrencyCode | ||
| + | |||
| + | toCurrencyCode | ||
| + | |||
| + | rate Decimal @db.Decimal(18, | ||
| + | |||
| + | rateDate | ||
| + | |||
| + | source | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | fromCurrency | ||
| + | @relation( | ||
| + | " | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | toCurrency | ||
| + | @relation( | ||
| + | " | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | fromCurrencyCode, | ||
| + | toCurrencyCode, | ||
| + | rateDate | ||
| + | ]) | ||
| + | |||
| + | @@index([rateDate]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Translation ====== | ||
| + | |||
| + | ===== Traductions ===== | ||
| + | |||
| + | Permet l' | ||
| + | |||
| + | <code prisma> | ||
| + | model Translation { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | languageCode | ||
| + | |||
| + | namespace | ||
| + | |||
| + | translationKey | ||
| + | |||
| + | translationValue | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | updatedAt | ||
| + | |||
| + | language | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | languageCode, | ||
| + | namespace, | ||
| + | translationKey | ||
| + | ]) | ||
| + | |||
| + | @@index([namespace]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | property.title | ||
| + | |||
| + | reservation.confirm | ||
| + | |||
| + | payment.invoice | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Region ====== | ||
| + | |||
| + | ===== Régions d' | ||
| + | |||
| + | Permet la gestion géographique. | ||
| + | |||
| + | <code prisma> | ||
| + | model Region { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | countryCode | ||
| + | |||
| + | code String | ||
| + | |||
| + | name String | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | country | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | countryCode, | ||
| + | code | ||
| + | ]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | FR_OCCITANIE | ||
| + | |||
| + | FR_PACA | ||
| + | |||
| + | FR_IDF | ||
| + | |||
| + | ES_CATALUNYA | ||
| + | |||
| + | US_FLORIDA | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== EnterpriseLicense ====== | ||
| + | |||
| + | ===== Licence SaaS Enterprise ===== | ||
| + | |||
| + | Gestion des déploiements internationaux. | ||
| + | |||
| + | <code prisma> | ||
| + | model EnterpriseLicense { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | licenseKey | ||
| + | |||
| + | edition | ||
| + | |||
| + | maxUsers | ||
| + | |||
| + | maxProperties | ||
| + | |||
| + | maxAgencies | ||
| + | |||
| + | validFrom | ||
| + | |||
| + | validTo | ||
| + | |||
| + | active | ||
| + | |||
| + | features | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([active]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== EnterpriseEdition ===== | ||
| + | |||
| + | <code prisma> | ||
| + | enum EnterpriseEdition { | ||
| + | |||
| + | COMMUNITY | ||
| + | |||
| + | PROFESSIONAL | ||
| + | |||
| + | BUSINESS | ||
| + | |||
| + | ENTERPRISE | ||
| + | |||
| + | ENTERPRISE_PLUS | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Tenant ====== | ||
| + | |||
| + | ===== Tenant ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | countryCode String? | ||
| + | |||
| + | currencyCode String? | ||
| + | |||
| + | languageCode String? | ||
| + | |||
| + | timezoneId String? | ||
| + | |||
| + | enterpriseLicense EnterpriseLicense? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relations ===== | ||
| + | |||
| + | <code prisma> | ||
| + | country Country? | ||
| + | |||
| + | currency Currency? | ||
| + | |||
| + | language Language? | ||
| + | |||
| + | timezone Timezone? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Property ====== | ||
| + | |||
| + | ===== Property ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | currencyCode String? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Relation ===== | ||
| + | |||
| + | <code prisma> | ||
| + | currency Currency? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Évolutions du modèle Reservation ====== | ||
| + | |||
| + | ===== Reservation ===== | ||
| + | |||
| + | Ajouter : | ||
| + | |||
| + | <code prisma> | ||
| + | currencyCode String? | ||
| + | exchangeRate Decimal? | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cas d' | ||
| + | |||
| + | ===== Multi-langues ===== | ||
| + | |||
| + | < | ||
| + | FR | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | EN | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | DE | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | ES | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Multi-devises ===== | ||
| + | |||
| + | < | ||
| + | EUR | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | USD | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | GBP | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | CHF | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Multi-régions | ||
| + | |||
| + | < | ||
| + | France | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Occitanie | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Agence | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Biens | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réseau international ===== | ||
| + | |||
| + | < | ||
| + | Tenant | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-marques | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-pays | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Multi-régions | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Validation ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma format | ||
| + | |||
| + | npx prisma validate | ||
| + | |||
| + | npx prisma generate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Migration ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma migrate dev \ | ||
| + | --name internationalization_multiregion | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Fonctionnalités couvertes ====== | ||
| + | |||
| + | ===== Internationalisation ===== | ||
| + | |||
| + | < | ||
| + | Multi-langues | ||
| + | |||
| + | Multi-devises | ||
| + | |||
| + | Multi-fuseaux | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Réseau ===== | ||
| + | |||
| + | < | ||
| + | Multi-pays | ||
| + | |||
| + | Multi-régions | ||
| + | |||
| + | Multi-agences | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Enterprise ===== | ||
| + | |||
| + | < | ||
| + | Licensing | ||
| + | |||
| + | Commercialisation | ||
| + | |||
| + | SaaS mondial | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== État du schéma ====== | ||
| + | |||
| + | Après Phase 2-M : | ||
| + | |||
| + | < | ||
| + | ≈ 101 modèles Prisma | ||
| + | </ | ||
| + | |||
| + | avec les domaines : | ||
| + | |||
| + | < | ||
| + | Core | ||
| + | |||
| + | Security | ||
| + | |||
| + | Properties | ||
| + | |||
| + | Owners | ||
| + | |||
| + | Customers | ||
| + | |||
| + | Reservations | ||
| + | |||
| + | Contracts | ||
| + | |||
| + | Payments | ||
| + | |||
| + | CRM | ||
| + | |||
| + | Messaging | ||
| + | |||
| + | Marketing | ||
| + | |||
| + | Automation | ||
| + | |||
| + | Governance | ||
| + | |||
| + | OTA | ||
| + | |||
| + | Revenue Management | ||
| + | |||
| + | Enterprise Security | ||
| + | |||
| + | Internationalization | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Phase 2-N — IA, Knowledge Base & Automatisation Avancée ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Construire la couche d' | ||
| + | |||
| + | Cette couche permettra : | ||
| + | |||
| + | * Assistant IA interne | ||
| + | * Recherche sémantique | ||
| + | * Base de connaissances | ||
| + | * Recommandations intelligentes | ||
| + | * Analyse documentaire | ||
| + | * Automatisation avancée | ||
| + | * Aide à la décision | ||
| + | * Support opérationnel | ||
| + | |||
| + | Cette phase finalise : | ||
| + | |||
| + | < | ||
| + | Sprint 13 — IA & Automatisation | ||
| + | |||
| + | Sprint 20 — Enterprise Analytics | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Architecture ====== | ||
| + | |||
| + | ===== Modèles ===== | ||
| + | |||
| + | < | ||
| + | AiConversation | ||
| + | |||
| + | AiMessage | ||
| + | |||
| + | KnowledgeDocument | ||
| + | |||
| + | KnowledgeChunk | ||
| + | |||
| + | AutomationScenario | ||
| + | |||
| + | AutomationExecution | ||
| + | |||
| + | Recommendation | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== AiConversation ====== | ||
| + | |||
| + | ===== Conversations IA ===== | ||
| + | |||
| + | Historisation des échanges avec l' | ||
| + | |||
| + | <code prisma> | ||
| + | model AiConversation { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | userId | ||
| + | |||
| + | title | ||
| + | |||
| + | modelName | ||
| + | |||
| + | contextType | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | updatedAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | user User @relation( | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | messages | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([userId]) | ||
| + | |||
| + | @@index([createdAt]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | Analyse réservations | ||
| + | |||
| + | Prévision revenus | ||
| + | |||
| + | Recherche client | ||
| + | |||
| + | Analyse contrat | ||
| + | |||
| + | Support utilisateur | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== AiMessage ====== | ||
| + | |||
| + | ===== Messages IA ===== | ||
| + | |||
| + | <code prisma> | ||
| + | model AiMessage { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | conversationId | ||
| + | |||
| + | role AiRole | ||
| + | |||
| + | content | ||
| + | |||
| + | tokenCount | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | conversation | ||
| + | @relation( | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@index([conversationId]) | ||
| + | |||
| + | @@index([createdAt]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== AiRole ===== | ||
| + | |||
| + | <code prisma> | ||
| + | enum AiRole { | ||
| + | |||
| + | SYSTEM | ||
| + | |||
| + | USER | ||
| + | |||
| + | ASSISTANT | ||
| + | |||
| + | TOOL | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== KnowledgeDocument ====== | ||
| + | |||
| + | ===== Base documentaire ===== | ||
| + | |||
| + | Documents utilisés par l' | ||
| + | |||
| + | <code prisma> | ||
| + | model KnowledgeDocument { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | documentId | ||
| + | |||
| + | title | ||
| + | |||
| + | sourceType | ||
| + | |||
| + | sourceReference | ||
| + | |||
| + | content | ||
| + | |||
| + | metadata | ||
| + | |||
| + | indexed | ||
| + | |||
| + | indexedAt | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | document | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | chunks | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([indexed]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== KnowledgeSourceType ===== | ||
| + | |||
| + | <code prisma> | ||
| + | enum KnowledgeSourceType { | ||
| + | |||
| + | DOCUMENT | ||
| + | |||
| + | CONTRACT | ||
| + | |||
| + | FAQ | ||
| + | |||
| + | WEBSITE | ||
| + | |||
| + | POLICY | ||
| + | |||
| + | PROCEDURE | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== KnowledgeChunk ====== | ||
| + | |||
| + | ===== Découpage vectoriel ===== | ||
| + | |||
| + | Préparation RAG. | ||
| + | |||
| + | <code prisma> | ||
| + | model KnowledgeChunk { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | knowledgeDocumentId | ||
| + | |||
| + | chunkIndex | ||
| + | |||
| + | content | ||
| + | |||
| + | embeddingId | ||
| + | |||
| + | metadata | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | knowledgeDocument | ||
| + | @relation( | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@unique([ | ||
| + | knowledgeDocumentId, | ||
| + | chunkIndex | ||
| + | ]) | ||
| + | |||
| + | @@index([knowledgeDocumentId]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== AutomationScenario ====== | ||
| + | |||
| + | ===== Automatisations avancées ===== | ||
| + | |||
| + | Version métier évoluée de : | ||
| + | |||
| + | < | ||
| + | AutomationRule | ||
| + | </ | ||
| + | |||
| + | <code prisma> | ||
| + | model AutomationScenario { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | code String | ||
| + | |||
| + | name String | ||
| + | |||
| + | description | ||
| + | |||
| + | triggerType | ||
| + | |||
| + | configuration | ||
| + | |||
| + | active | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | updatedAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | executions | ||
| + | |||
| + | @@unique([tenantId, | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([active]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Exemples ===== | ||
| + | |||
| + | < | ||
| + | ReservationConfirmed | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | SendContract | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | CreateTask | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | NotifyOwner | ||
| + | |||
| + | ---------------- | ||
| + | |||
| + | PaymentReceived | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | GenerateInvoice | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | NotifyCustomer | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== AutomationExecution ====== | ||
| + | |||
| + | ===== Historique d' | ||
| + | |||
| + | Extension du modèle existant. | ||
| + | |||
| + | <code prisma> | ||
| + | model AutomationExecution { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | automationScenarioId | ||
| + | |||
| + | automationRuleId | ||
| + | |||
| + | status | ||
| + | |||
| + | entityType | ||
| + | |||
| + | entityId | ||
| + | |||
| + | executionContext | ||
| + | |||
| + | startedAt | ||
| + | |||
| + | completedAt | ||
| + | |||
| + | errorMessage | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | automationScenario | ||
| + | @relation( | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | automationRule | ||
| + | @relation( | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@index([automationScenarioId]) | ||
| + | |||
| + | @@index([automationRuleId]) | ||
| + | |||
| + | @@index([status]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Recommendation ====== | ||
| + | |||
| + | ===== Recommandations IA ===== | ||
| + | |||
| + | Aide à la décision. | ||
| + | |||
| + | <code prisma> | ||
| + | model Recommendation { | ||
| + | |||
| + | id String @id @default(uuid()) | ||
| + | |||
| + | tenantId | ||
| + | |||
| + | entityType | ||
| + | |||
| + | entityId | ||
| + | |||
| + | recommendationType | ||
| + | |||
| + | title | ||
| + | |||
| + | description | ||
| + | |||
| + | confidenceScore | ||
| + | |||
| + | accepted | ||
| + | |||
| + | acceptedAt | ||
| + | |||
| + | createdAt | ||
| + | |||
| + | tenant | ||
| + | fields: | ||
| + | references: | ||
| + | ) | ||
| + | |||
| + | @@index([tenantId]) | ||
| + | |||
| + | @@index([entityType]) | ||
| + | |||
| + | @@index([recommendationType]) | ||
| + | |||
| + | @@index([confidenceScore]) | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== RecommendationType ===== | ||
| + | |||
| + | <code prisma> | ||
| + | enum RecommendationType { | ||
| + | |||
| + | PRICE_OPTIMIZATION | ||
| + | |||
| + | CUSTOMER_RETENTION | ||
| + | |||
| + | LEAD_CONVERSION | ||
| + | |||
| + | REVENUE_FORECAST | ||
| + | |||
| + | PROPERTY_IMPROVEMENT | ||
| + | |||
| + | RISK_ALERT | ||
| + | |||
| + | AUTOMATION | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Relations à ajouter ====== | ||
| + | |||
| + | ===== Tenant ===== | ||
| + | |||
| + | <code prisma> | ||
| + | aiConversations AiConversation[] | ||
| + | |||
| + | knowledgeDocuments KnowledgeDocument[] | ||
| + | |||
| + | automationScenarios AutomationScenario[] | ||
| + | |||
| + | recommendations Recommendation[] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== User ===== | ||
| + | |||
| + | <code prisma> | ||
| + | aiConversations AiConversation[] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Document ===== | ||
| + | |||
| + | <code prisma> | ||
| + | knowledgeDocuments KnowledgeDocument[] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Cas d' | ||
| + | |||
| + | ===== Assistant Agence ===== | ||
| + | |||
| + | < | ||
| + | "Quels biens sont sous-performants ?" | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Analyse IA | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Recommandations | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Assistant Commercial ===== | ||
| + | |||
| + | < | ||
| + | " | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Scoring | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Liste qualifiée | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Assistant Revenue ===== | ||
| + | |||
| + | < | ||
| + | " | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Forecast | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Recommandations | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Recherche documentaire ===== | ||
| + | |||
| + | < | ||
| + | Question | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | RAG | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | KnowledgeDocument | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | KnowledgeChunk | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Réponse | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Validation ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma format | ||
| + | |||
| + | npx prisma validate | ||
| + | |||
| + | npx prisma generate | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Migration ====== | ||
| + | |||
| + | <code bash> | ||
| + | npx prisma migrate dev \ | ||
| + | --name ai_knowledge_automation | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Fonctionnalités couvertes ====== | ||
| + | |||
| + | ===== IA ===== | ||
| + | |||
| + | < | ||
| + | Assistant conversationnel | ||
| + | |||
| + | Recherche sémantique | ||
| + | |||
| + | Analyse métier | ||
| + | |||
| + | Aide à la décision | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Knowledge Base ===== | ||
| + | |||
| + | < | ||
| + | FAQ | ||
| + | |||
| + | Procédures | ||
| + | |||
| + | Contrats | ||
| + | |||
| + | Documentation | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Automatisation ===== | ||
| + | |||
| + | < | ||
| + | Workflows avancés | ||
| + | |||
| + | Scénarios | ||
| + | |||
| + | Actions automatiques | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== État final du schéma ====== | ||
| + | |||
| + | Après Phase 2-N : | ||
| + | |||
| + | < | ||
| + | ≈ 108 à 112 modèles Prisma | ||
| + | </ | ||
| + | |||
| + | répartis sur : | ||
| + | |||
| + | < | ||
| + | Core | ||
| + | |||
| + | Security | ||
| + | |||
| + | RBAC | ||
| + | |||
| + | Properties | ||
| + | |||
| + | Owners | ||
| + | |||
| + | Customers | ||
| + | |||
| + | Reservations | ||
| + | |||
| + | Contracts | ||
| + | |||
| + | Payments | ||
| + | |||
| + | Accounting | ||
| + | |||
| + | CRM | ||
| + | |||
| + | Messaging | ||
| + | |||
| + | Marketing | ||
| + | |||
| + | Automation | ||
| + | |||
| + | Governance | ||
| + | |||
| + | OTA | ||
| + | |||
| + | Revenue Management | ||
| + | |||
| + | Enterprise Security | ||
| + | |||
| + | Internationalization | ||
| + | |||
| + | Artificial Intelligence | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Fin de la Phase 2 ====== | ||
| + | |||
| + | Le schéma Prisma couvre désormais l' | ||
| + | |||
| + | < | ||
| + | Sprint 1 → Sprint 20 | ||
| + | </ | ||
| + | |||
| + | et constitue la base pour : | ||
| + | |||
| + | < | ||
| + | Phase 3 | ||
| + | |||
| + | OpenAPI 3.1 complet | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | DTO NestJS | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | SDK TypeScript | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Génération Backend NestJS | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Génération Frontend NextJS | ||
| + | |||
| + | ↓ | ||
| + | |||
| + | Monorepo Enterprise 4.0 | ||
| + | </ | ||
ujusum/3-codage/1-repository/2-prisma-schema.1780851656.txt.gz · Dernière modification : 2026/06/07 19:00 de 91.170.108.99