Outils pour utilisateurs

Outils du site


ujusum:3-codage:1-repository:2-prisma-schema

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
ujusum:3-codage:1-repository:2-prisma-schema [2026/06/07 05:13] 91.170.108.99ujusum:3-codage:1-repository:2-prisma-schema [2026/06/07 05:27] (Version actuelle) 91.170.108.99
Ligne 1089: Ligne 1089:
 @@index([expiresAt]) @@index([expiresAt])
 </code> </code>
- 
----- 
-====== Phase 2-C — Domaine Catalogue Immobilier (Properties) ====== 
- 
-Effectivement. 
- 
-Dans le modèle précédent, la relation suivante existait : 
- 
-<code prisma> 
-properties Property[] 
-</code> 
- 
-dans la table : 
- 
-<code prisma> 
-Tenant 
-</code> 
- 
-mais la table : 
- 
-<code prisma> 
-Property 
-</code> 
- 
-n'avait pas encore été définie. 
- 
-Or le domaine "Property" est le cœur de toute la plateforme. 
- 
-Toutes les fonctionnalités suivantes en dépendent : 
- 
-  * Réservations 
-  * Disponibilités 
-  * Tarification 
-  * Contrats 
-  * OTA 
-  * Revenue Management 
-  * CRM 
-  * Extranet propriétaire 
- 
-La table Property doit donc être construite très tôt. 
  
 ---- ----
Ligne 1555: Ligne 1515:
 ---- ----
  
-====== Évolution future ======+====== Domaine Owner ======
  
-Ces tables seront enrichies dans les prochains domaines : +===== Architecture =====
- +
-===== Sprint 4 =====+
  
 <code> <code>
-Reservation+Owner 
 + 
 +OwnerAddress 
 + 
 +OwnerDocument 
 + 
 +OwnerBankAccount 
 + 
 +PropertyOwner
 </code> </code>
  
-ajoutera :+----
  
-<code> +====== Owner ======
-Property+
  
-+<code prisma> 
 +model Owner {
  
-Reservations+  id                    String @id @default(uuid()) 
 + 
 +  tenantId              String 
 + 
 +  code                  String @unique 
 + 
 +  companyName           String? 
 + 
 +  firstName             String? 
 + 
 +  lastName              String? 
 + 
 +  email                 String 
 + 
 +  phone                 String? 
 + 
 +  mobile                String? 
 + 
 +  taxIdentifier         String? 
 + 
 +  vatNumber             String? 
 + 
 +  active                Boolean @default(true) 
 + 
 +  createdAt             DateTime @default(now()) 
 + 
 +  updatedAt             DateTime @updatedAt 
 + 
 +  deletedAt             DateTime? 
 + 
 +  tenant                Tenant @relation( 
 +                            fields:[tenantId], 
 +                            references:[id] 
 +                         ) 
 + 
 +  address               OwnerAddress? 
 + 
 +  documents             OwnerDocument[] 
 + 
 +  bankAccounts          OwnerBankAccount[] 
 + 
 +  properties            PropertyOwner[] 
 +}
 </code> </code>
  
 ---- ----
  
-===== Sprint 7 =====+====== OwnerAddress ======
  
-<code> +<code prisma
-Owner+model OwnerAddress { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  ownerId               String @unique 
 + 
 +  addressLine1          String 
 + 
 +  addressLine2          String? 
 + 
 +  postalCode            String 
 + 
 +  city                  String 
 + 
 +  state                 String? 
 + 
 +  countryCode           String 
 + 
 +  owner                 Owner @relation( 
 +                            fields:[ownerId], 
 +                            references:[id] 
 +                         ) 
 +}
 </code> </code>
  
-ajoutera :+---- 
 + 
 +====== OwnerDocument ====== 
 + 
 +<code prisma> 
 +model OwnerDocument { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  ownerId               String 
 + 
 +  documentType          String 
 + 
 +  fileUrl               String 
 + 
 +  createdAt             DateTime @default(now()) 
 + 
 +  owner                 Owner @relation( 
 +                            fields:[ownerId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +---- 
 + 
 +===== Document Types =====
  
 <code> <code>
-PropertyOwner+IDENTITY
  
-OwnerDocuments+TAX_DOCUMENT
  
-OwnerRevenue+MANDATE 
 + 
 +BANK_DETAILS 
 + 
 +INSURANCE
 </code> </code>
  
 ---- ----
  
-===== Sprint 17 =====+====== OwnerBankAccount ======
  
-ajoutera :+<code prisma> 
 +model OwnerBankAccount { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  ownerId               String 
 + 
 +  iban                  String 
 + 
 +  bic                   String? 
 + 
 +  accountHolder         String 
 + 
 +  active                Boolean @default(true) 
 + 
 +  owner                 Owner @relation( 
 +                            fields:[ownerId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== Domaine Reservation ====== 
 + 
 +===== Architecture =====
  
 <code> <code>
-DynamicPrice+Reservation
  
-PricingRule+ReservationGuest
  
-RevenueSimulation+ReservationStatusHistory 
 + 
 +ReservationEvent 
 + 
 +ReservationPricing
 </code> </code>
  
 ---- ----
  
-===== Sprint 18 =====+====== Reservation ====== 
 + 
 +===== Table centrale ===== 
 + 
 +<code prisma> 
 +model Reservation { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  tenantId              String 
 + 
 +  propertyId            String 
 + 
 +  customerId            String? 
 + 
 +  reference             String @unique 
 + 
 +  status                ReservationStatus 
 + 
 +  checkInDate           DateTime 
 + 
 +  checkOutDate          DateTime 
 + 
 +  nights                Int 
 + 
 +  adults                Int 
 + 
 +  children              Int 
 + 
 +  infants               Int 
 + 
 +  totalGuests           Int 
 + 
 +  notes                 String? 
 + 
 +  source                ReservationSource 
 + 
 +  createdAt             DateTime @default(now()) 
 + 
 +  updatedAt             DateTime @updatedAt 
 + 
 +  cancelledAt           DateTime? 
 + 
 +  tenant                Tenant @relation( 
 +                            fields:[tenantId], 
 +                            references:[id] 
 +                         ) 
 + 
 +  property              Property @relation( 
 +                            fields:[propertyId], 
 +                            references:[id] 
 +                         ) 
 + 
 +  guests                ReservationGuest[] 
 + 
 +  events                ReservationEvent[] 
 + 
 +  statusHistory         ReservationStatusHistory[] 
 + 
 +  pricing               ReservationPricing? 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationStatus ====== 
 + 
 +<code prisma> 
 +enum ReservationStatus { 
 + 
 +  DRAFT 
 + 
 +  PENDING 
 + 
 +  CONFIRMED 
 + 
 +  SIGNED 
 + 
 +  PAID 
 + 
 +  CHECKED_IN 
 + 
 +  COMPLETED 
 + 
 +  CANCELLED 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationSource ====== 
 + 
 +<code prisma> 
 +enum ReservationSource { 
 + 
 +  WEBSITE 
 + 
 +  BACKOFFICE 
 + 
 +  AIRBNB 
 + 
 +  BOOKING 
 + 
 +  VRBO 
 + 
 +  API 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationGuest ====== 
 + 
 +<code prisma> 
 +model ReservationGuest { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  reservationId         String 
 + 
 +  firstName             String 
 + 
 +  lastName              String 
 + 
 +  birthDate             DateTime? 
 + 
 +  email                 String? 
 + 
 +  phone                 String? 
 + 
 +  isPrimary             Boolean @default(false) 
 + 
 +  reservation           Reservation @relation( 
 +                            fields:[reservationId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationPricing ====== 
 + 
 +<code prisma> 
 +model ReservationPricing { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  reservationId         String @unique 
 + 
 +  nightlyAmount         Decimal @db.Decimal(10,2) 
 + 
 +  cleaningFee           Decimal @db.Decimal(10,2) 
 + 
 +  touristTax            Decimal @db.Decimal(10,2) 
 + 
 +  discountAmount        Decimal @db.Decimal(10,2) 
 + 
 +  totalAmount           Decimal @db.Decimal(10,2) 
 + 
 +  currencyCode          String 
 + 
 +  reservation           Reservation @relation( 
 +                            fields:[reservationId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationEvent ====== 
 + 
 +<code prisma> 
 +model ReservationEvent { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  reservationId         String 
 + 
 +  eventType             String 
 + 
 +  payload               Json? 
 + 
 +  createdAt             DateTime @default(now()) 
 + 
 +  reservation           Reservation @relation( 
 +                            fields:[reservationId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +----
  
-ajoutera :+===== Event Types =====
  
 <code> <code>
-PropertyDistribution+CREATED
  
-OTA Mapping+CONFIRMED
  
-Channel Publication+SIGNED 
 + 
 +PAID 
 + 
 +CHECK_IN 
 + 
 +CHECK_OUT 
 + 
 +CANCELLED 
 +</code> 
 + 
 +---- 
 + 
 +====== ReservationStatusHistory ====== 
 + 
 +<code prisma> 
 +model ReservationStatusHistory { 
 + 
 +  id                    String @id @default(uuid()) 
 + 
 +  reservationId         String 
 + 
 +  previousStatus        ReservationStatus? 
 + 
 +  newStatus             ReservationStatus 
 + 
 +  changedAt             DateTime @default(now()) 
 + 
 +  reservation           Reservation @relation( 
 +                            fields:[reservationId], 
 +                            references:[id] 
 +                         ) 
 +
 +</code> 
 + 
 +---- 
 + 
 +====== Relations à ajouter ====== 
 + 
 +===== Property ===== 
 + 
 +Ajouter : 
 + 
 +<code prisma> 
 +reservations Reservation[] 
 +</code> 
 + 
 +---- 
 + 
 +===== Tenant ===== 
 + 
 +Ajouter : 
 + 
 +<code prisma> 
 +owners Owner[] 
 + 
 +reservations Reservation[] 
 +</code> 
 + 
 +---- 
 + 
 +====== Indexes ====== 
 + 
 +===== Owner ===== 
 + 
 +<code prisma> 
 +@@index([tenantId]) 
 + 
 +@@index([email]) 
 + 
 +@@index([active]) 
 +</code> 
 + 
 +---- 
 + 
 +===== Reservation ===== 
 + 
 +<code prisma> 
 +@@index([tenantId]) 
 + 
 +@@index([propertyId]) 
 + 
 +@@index([status]) 
 + 
 +@@index([checkInDate]) 
 + 
 +@@index([checkOutDate]) 
 + 
 +@@index([reference]) 
 +</code> 
 + 
 +---- 
 + 
 +===== ReservationGuest ===== 
 + 
 +<code prisma> 
 +@@index([reservationId])
 </code> </code>
  
Ligne 1639: Ligne 2018:
 <code bash> <code bash>
 npx prisma migrate dev \ npx prisma migrate dev \
---name property_catalog+--name owners_and_reservations
 </code> </code>
  
 ---- ----
  
-====== Résultat ======+====== État actuel du schéma ======
  
-À ce stade, vous disposez enfin du premier domaine métier central de la plateforme :+À ce stade, le noyau fonctionnel est enfin présent :
  
 <code> <code>
Ligne 1656: Ligne 2035:
  
 Permission Permission
 +
 +Owner
  
 Property Property
  
-PropertyAddress+Reservation 
 +</code>
  
-PropertyFeature+avec :
  
-PropertyMedia+<code> 
 +Catalogue Immobilier
  
-PropertyAvailability+Propriétaires
  
-PropertyRate+Réservations 
 + 
 +RBAC 
 + 
 +Multi-tenant
 </code> </code>
  
-Toutes les futures fonctionnalités métier pourront désormais s'appuyer sur ce socle immobilier.+---- 
 + 
 +====== Étape suivante ====== 
 + 
 +===== Phase 2-E ===== 
 + 
 +Domaines financiers et contractuels : 
 + 
 +<code> 
 +Contract 
 + 
 +ContractTemplate 
 + 
 +ContractSignature 
 + 
 +Document 
 + 
 +Payment 
 + 
 +Invoice 
 + 
 +Refund 
 + 
 +AccountingEntry 
 +</code> 
 + 
 +Ces tables permettront d'implémenter intégralement : 
 + 
 +  * Sprint 5 — Contrats & Signature Électronique 
 +  * Sprint 6 — Paiements & Facturation 
 + 
 +et de disposer du premier flux métier complet : 
 + 
 +<code> 
 +Property 
 + 
 +↓ 
 + 
 +Reservation 
 + 
 +↓ 
 + 
 +Contract 
 + 
 +↓ 
 + 
 +Payment 
 + 
 +↓ 
 + 
 +Invoice 
 +</code>
ujusum/3-codage/1-repository/2-prisma-schema.1780802032.txt.gz · Dernière modification : 2026/06/07 05:13 de 91.170.108.99 · Actuellement bloqué par : 192.168.0.100,216.73.216.72

DokuWiki Appliance - Powered by TurnKey Linux