Relations et cycles de vie

Le modèle distingue les faits durables, les décisions, les états financiers et l’exécution des processus. Un même objet peut exposer plusieurs axes de statut lorsque ces axes répondent à des questions métier différentes ; les projections, elles, décrivent un calcul à un instant donné et n’inventent pas de lifecycle autonome.

Vue d’ensemble

Les relations se lisent d’abord par famille fonctionnelle, puis par type d’objet.

FamilleObjetsRôle
Entreprises et relationscompany, contact, contact_role, company_groupIdentifier les organisations, leurs contacts et les relations qui structurent leurs rôles métier.
Parcourscheckout_session, onboarding_casePorter le contexte métier durable d’un checkout ou d’un onboarding, indépendamment de l’exécution du processus.
Contrôles et décisionscompliance_check, risk_score, approval_request, approval_assignmentReprésenter les vérifications, scores et approbations qui produisent des faits décisionnels réutilisables.
Vente et facturationorder, invoice, invoice_balance, return, return_item, dispute, receivable, payment_term, due_date_schedule, line_itemReprésenter la commande client, la facturation, les retours, litiges, échéances et soldes à recevoir.
Créditcredit_limit, credit_exposure, effective_credit_limit, credit_availability_checkDéfinir les limites de crédit, mesurer l’exposition et calculer la capacité disponible à un instant donné.
Paiements et rapprochementpsp_payment, payment, payment_allocationSuivre paiements PSP, mouvements de trésorerie, allocations de paiement et engagements de règlement.
Achats et fournisseurspurchase_order, supplier_invoice, payable, supplier_paymentReprésenter commandes fournisseurs, factures fournisseurs, dette AP et décaissements.

Ne pas confondre les axes de statut

Un champ status ne doit jamais devenir un résumé ambigu de réalités différentes. Lorsque le lifecycle administratif, la résolution commerciale, les faits physiques ou le règlement évoluent indépendamment, le modèle les expose sur des axes séparés.

AxeQuestionExemples
Lifecycle de la ressourceL’objet existe-t-il encore comme dossier ou document actif ?return.status, dispute.status, invoice.status
Résolution métierQuelle conclusion métier a été prise ?return.resolution_status, dispute.resolution_status
RèglementQuel est l’état financier d’un document ?invoice.settlement_status, supplier_invoice.settlement_status
Faits physiquesQu’est-ce qui s’est réellement produit ?return.shipped_at, received_at, inspected_at
Exécution du processusOù en est l’orchestration qui traite le dossier ?process_status dérivé lorsque l’objet est process-owned
Projection calculéeQue vaut le solde ou la capacité à cet instant ?receivable, payable, effective_credit_limit, credit_availability_check
Un terminal technique n’invente pas une conclusion métier L’arrêt, l’échec ou la complétion d’un processus n’est pas automatiquement une approbation, un rejet, une résolution de litige ou une conclusion de retour. La transition métier doit être produite explicitement par le contrat qui en a l’autorité.

Objets process-owned

Certains dossiers métier possèdent une instance de processus canonique qui porte leur politique et leur orchestration. La ressource conserve ce qui doit rester vrai même si le processus est rejoué, remplacé ou échoue.

ObjetRépartition des responsabilités
checkout_sessionLa session conserve le contexte et le résultat durable du checkout ; le processus orchestre les étapes nécessaires.
onboarding_caseLe dossier conserve les faits d’entrée en relation ; le processus porte collecte, contrôles et interactions.
disputeLe litige expose le fait contesté et sa résolution sans imposer la politique de suspension, relance ou remédiation.
returnLe retour conserve demande, faits physiques et résolution ; le processus décide autorisation, inspection et remédiation.

Le cas le plus explicite est le return : status décrit le dossier, resolution_status la conclusion commerciale, les milestones décrivent les faits logistiques et process_status reflète séparément l’exécution du processus propriétaire.

Chaînes financières AR et AP

Les chaînes client et fournisseur sont symétriques sur les principes, sans fusionner leurs objets. Le cash entrant côté acheteur reste un payment ; le décaissement fournisseur reste un supplier_payment.

Vente / comptes clients

  1. order — porte la commande client et ses lignes.
  2. invoice — porte le document financier et son échéance.
  3. receivable — projette le solde dû par l’acheteur.
  4. psp_payment — suit un paiement ou remboursement côté PSP lorsqu’un PSP intervient.
  5. payment — constate un mouvement de trésorerie côté acheteur, avec ou sans PSP.
  6. payment_allocation — explique comment la source financière est affectée aux documents ou opérations.

Achats / comptes fournisseurs

  1. purchase_order — porte la commande adressée au fournisseur.
  2. supplier_invoice — porte le document financier fournisseur.
  3. payable — projette le solde dû au fournisseur.
  4. supplier_payment — porte le décaissement fournisseur et son lifecycle.
  5. payment_allocation — explique l’affectation du mouvement aux cibles AP.
Les projections ne décident pas la politique Les axes disputed, due et undisputed de receivable et payable exposent des faits analytiques. Un processus décide ensuite s’il faut relancer, suspendre, approuver ou payer ; la projection ne prend pas cette décision à sa place.

Approbations : demande agrégée et décision humaine

Une approval_request porte la politique et le lifecycle agrégé. Sesapproval_assignment sont embarquées : chacune représente une sollicitation d’approbateur et devient une décision humaine uniquement lorsqu’elle atteint approved ou rejected.

Il n’existe donc pas de troisième objet approval_decision. Une expiration ou une annulation administrative peut résoudre la demande sans fabriquer de décision humaine.

Projections et objets embarqués

receivable, payable, effective_credit_limit et credit_availability_checksont des snapshots calculés. Ils n’ont pas d’identifiant autonome à faire progresser d’un statut à l’autre.

line_item, return_item et approval_assignment sont embarqués dans un contexte parent. Leur sémantique est documentée avec ce parent plutôt que comme ressource adressable indépendante.