Aller au contenu

sync.rejet

Rejets de sécurité de la synchronisation (EC-043) : identité incohérente, identifiant ou séquence de commande déjà utilisés. Ajout seul. Aucune écriture métier ne découle d’un rejet.

Name Type Default Nullable Children Parents Comment
id uuid app.uuid_v7() false Identifiant du rejet (UUID v7).
organisation_id uuid false app.organisation Organisation du jeton qui a envoyé la commande. Sert à l’isolation par RLS (EC-032).
commande_id uuid true Identifiant de commande annoncé dans l’enveloppe reçue. Sans clé étrangère : il peut désigner une autre commande.
appareil_id uuid true Appareil annoncé dans l’enveloppe reçue. Sans clé étrangère : il peut être incohérent avec le jeton.
utilisateur_id uuid true Utilisateur annoncé dans l’enveloppe reçue. Sans clé étrangère : il peut être incohérent avec le jeton.
sequence bigint true Séquence annoncée dans l’enveloppe reçue.
code text false Code du rejet : identite_incoherente, identifiant_reutilise ou sequence_reutilisee.
empreinte_recue text true Empreinte annoncée dans l’enveloppe reçue.
details jsonb ‘{}’::jsonb false Éléments de comparaison : valeurs attendues et reçues, empreinte de la commande déjà enregistrée.
enveloppe jsonb false Enveloppe reçue, telle quelle.
recu_le timestamp with time zone now() false Heure de réception du rejet par le serveur.
Name Type Definition
rejet_code_check CHECK CHECK ((code = ANY (ARRAY[‘identite_incoherente’::text, ‘identifiant_reutilise’::text, ‘sequence_reutilisee’::text])))
rejet_organisation_id_fkey FOREIGN KEY FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)
rejet_pkey PRIMARY KEY PRIMARY KEY (id)
Name Definition
rejet_pkey CREATE UNIQUE INDEX rejet_pkey ON sync.rejet USING btree (id)
rejet_organisation_idx CREATE INDEX rejet_organisation_idx ON sync.rejet USING btree (organisation_id, recu_le DESC)
Name Definition
journal CREATE TRIGGER journal AFTER INSERT OR DELETE OR UPDATE ON sync.rejet FOR EACH ROW EXECUTE FUNCTION journal.tg_journaliser()
ajout_seul CREATE TRIGGER ajout_seul BEFORE DELETE OR UPDATE ON sync.rejet FOR EACH ROW EXECUTE FUNCTION app.tg_ajout_seul()
erDiagram

"sync.rejet" }o--|| "app.organisation" : "FOREIGN KEY (organisation_id) REFERENCES app.organisation(id)"

"sync.rejet" {
  uuid id "Identifiant du rejet (UUID v7)."
  uuid organisation_id FK "Organisation du jeton qui a envoyé la commande. Sert à l'isolation par RLS (EC-032)."
  uuid commande_id "Identifiant de commande annoncé dans l'enveloppe reçue. Sans clé étrangère : il peut désigner une autre commande."
  uuid appareil_id "Appareil annoncé dans l'enveloppe reçue. Sans clé étrangère : il peut être incohérent avec le jeton."
  uuid utilisateur_id "Utilisateur annoncé dans l'enveloppe reçue. Sans clé étrangère : il peut être incohérent avec le jeton."
  bigint sequence "Séquence annoncée dans l'enveloppe reçue."
  text code "Code du rejet : identite_incoherente, identifiant_reutilise ou sequence_reutilisee."
  text empreinte_recue "Empreinte annoncée dans l'enveloppe reçue."
  jsonb details "Éléments de comparaison : valeurs attendues et reçues, empreinte de la commande déjà enregistrée."
  jsonb enveloppe "Enveloppe reçue, telle quelle."
  timestamp_with_time_zone recu_le "Heure de réception du rejet par le serveur."
}
"app.organisation" {
  uuid id "Identifiant de l'organisation (UUID v7)."
  text code "Code court en majuscules. Immuable : il figure dans les identifiants Keycloak (coopa.agent01). « EXT » est réservé."
  text nom "Nom de l'organisation."
  text pays "Pays, code ISO 3166-1 alpha-2."
  text langue "Langue de l'organisation : fr ou en."
  text fuseau_horaire "Fuseau horaire IANA utilisé pour l'affichage des dates."
  text devise_defaut "Devise par défaut des montants, code ISO 4217."
  text keycloak_organisation_id "Identifiant de l'organisation dans Keycloak."
  text organisme_certificateur "Organisme de certification de l'organisation. Aucun contrôle de format (EC-027)."
  text code_operateur "Code d'opérateur attribué par l'organisme certificateur."
  uuid logo_fichier_id FK "Fichier du logo (EC-029)."
  timestamp_with_time_zone cree_le "Date de création de la ligne."
  timestamp_with_time_zone modifie_le "Date de la dernière modification, tenue par un déclencheur."
  text source_conformite "Source des décisions de conformité : `interne` (contrôle interne de BioTrace) ou `externe` (outil tiers). Une seule source active à la fois ; app.statut_conformite.source doit lui être égale."
  text statut "État du compte client : `active` ou `suspendue`. Une organisation suspendue est refusée par la garde d'authentification (`organisation_suspendue`) ; ses données et ses comptes sont conservés. Décidé par l'équipe de l'éditeur (EC-126)."
  timestamp_with_time_zone suspendue_le "Date de la suspension en cours ; nulle tant que l'organisation est active."
}

Generated by tbls