Rolebase Développeurs
Référence API

log

Représente une entrée de journal d'activité suivant les modifications d'entités, les actions utilisateur et fournissant une piste d'audit. Les journaux supportent la fonctionnalité d'annulation/rétablissement via un suivi structuré des modifications.

Champs

Champ Type Description
id uuid Identifiant unique de l'entrée de journal (généré automatiquement)
orgId uuid Référence à l'organisation
userId uuid Utilisateur qui a effectué la modification
memberId uuid Membre qui a effectué la modification
memberName String Nom du membre (conservé pour les membres supprimés)
createdAt Timestamp Date de création de l'entrée de journal (par défaut : horodatage actuel)
display JSON Type de journal et données à afficher dans l'interface
changes JSON Journal structuré des modifications d'entités pour l'annulation/rétablissement
canceled Boolean Indique si cette entrée de journal a été annulée (par défaut : false)
cancelLogId uuid Référence à l'entrée de journal qui a été annulée (optionnel)
cancelMemberId uuid Membre qui a annulé l'action (optionnel)
cancelMemberName String Nom du membre qui a annulé (optionnel)
meetingId uuid Réunion pendant laquelle ce journal a été créé (optionnel)
taskId uuid Tâche associée à ce journal (optionnel)
threadId uuid Discussion associée à ce journal (optionnel)

Structure des modifications d’entités

Le champ changes suit les modifications des entités avec la structure suivante :

type EntityChange = {
  type: 'Create' | 'Update' | 'Delete'
  id: string
  data?: Entity // Pour Create/Delete
  prevData?: Entity // Pour Update (état précédent)
  newData?: Entity // Pour Update (nouvel état)
}

Relations

Relations objet

  • org — L’organisation à laquelle ce journal appartient
  • user — L’utilisateur qui a effectué la modification
  • member — Le membre qui a effectué la modification
  • cancelLog — L’entrée de journal qui a été annulée (s’il s’agit d’une annulation)
  • cancelMember — Le membre qui a annulé l’action
  • task — La tâche associée (le cas échéant)
  • thread — La discussion associée (le cas échéant)

Exemples de requêtes

Lister les journaux récents

query GetRecentLogs($orgId: uuid!) {
  log(
    where: { orgId: { _eq: $orgId } }
    order_by: { createdAt: desc }
    limit: 10
  ) {
    id
    createdAt
    memberName
    display
    changes
    canceled
    task {
      title
    }
    thread {
      title
    }
  }
}

Exemples de mutations

Créer une entrée de journal

mutation CreateLog {
  insert_log_one(
    object: {
      orgId: "your-org-id"
      memberId: "member-id"
      memberName: "John Doe"
      display: { type: "task_created", title: "New Task" }
      changes: {
        type: "Create"
        id: "task-id"
        data: { title: "New Task", status: "TODO" }
      }
    }
  ) {
    id
    createdAt
    display
  }
}

Annuler une entrée de journal (Annulation)

mutation CancelLog {
  insert_log_one(
    object: {
      orgId: "your-org-id"
      memberId: "member-id"
      memberName: "Jane Doe"
      cancelLogId: "original-log-id"
      cancelMemberId: "original-member-id"
      cancelMemberName: "John Doe"
      display: { type: "task_creation_canceled" }
      changes: {
        type: "Delete"
        id: "task-id"
        data: { title: "New Task", status: "TODO" }
      }
    }
  ) {
    id
    cancelLog {
      id
      display
    }
  }
}

Permissions

L’accès aux journaux est contrôlé selon les règles suivantes :

  • Les membres de l’organisation peuvent consulter les journaux de leur organisation
  • La création de journaux nécessite l’appartenance à l’organisation avec un rôle approprié
  • Le userId est automatiquement défini sur l’utilisateur authentifié
  • Les entrées de journal ne peuvent pas être supprimées après leur création. Seul le champ canceled peut être mis à jour
  • L’annulation est gérée par la création de nouvelles entrées de journal (pas par la modification des originales)

Le champ display contient des informations conviviales sur l’action, tandis que le champ changes stocke les détails techniques pour l’annulation/rétablissement. Les noms des membres sont conservés pour maintenir la lisibilité même si les membres sont supprimés ultérieurement.