Skip to main content
View as Markdown

Historique et commentaires des enregistrements

Chaque enregistrement porte deux surfaces d'activité : un historique des modifications automatique (une piste d'audit maintenue par le système indiquant qui a modifié quoi et quand) et un fil de commentaires (une discussion rédigée par les utilisateurs attachée à l'enregistrement). Les deux sont accessibles sous l'URL de l'enregistrement.

Méthode et chemin Description
GET /api/tables/:tableId/records/:recordId/history Récupérer l'historique des modifications d'un enregistrement
GET /api/tables/:tableId/records/:recordId/comments Lister les commentaires d'un enregistrement
GET /api/tables/:tableId/records/:recordId/comments/:commentId Lire un commentaire unique
POST /api/tables/:tableId/records/:recordId/comments Créer un commentaire
PATCH /api/tables/:tableId/records/:recordId/comments/:commentId Modifier un commentaire
DELETE /api/tables/:tableId/records/:recordId/comments/:commentId Supprimer un commentaire

Historique des modifications

L'historique est suivi automatiquement pour toutes les tables — il n'y a rien à activer. Chaque création, mise à jour, suppression et restauration est enregistrée avec l'utilisateur agissant et un différentiel structuré au niveau des champs. Lisez-le avec :

GET /api/tables/orders/records/123/history
{
  "history": [
    {
      "id": 1,
      "action": "update",
      "changes": {
        "status": { "from": "pending", "to": "approved" }
      },
      "user": { "id": 1, "name": "Alice" },
      "timestamp": "2025-01-15T10:30:00Z"
    }
  ],
  "total": 1
}
Champ Description
action create, update, delete ou restore
changes Différentiel { from, to } par champ pour la modification
user L'utilisateur agissant (id, name)
timestamp Heure ISO 8601 à laquelle la modification s'est produite

L'historique enregistre les modifications de toutes les sources — écritures via l'API REST, modifications administrateur, automatisations et opérations en lot — de sorte que la piste est complète. Il complète les champs d'auteur par enregistrement (createdBy/updatedBy/deletedBy), qui capturent le dernier acteur sur l'enregistrement lui-même.

Commentaires

Les commentaires sont des notes rédigées par les utilisateurs attachées à un enregistrement, prenant en charge les @mentions. L'utilisateur courant est injecté automatiquement comme auteur — vous ne fournissez que le content.

POST /api/tables/orders/records/123/comments
{
  "content": "This looks good! @alice can you confirm the numbers?"
}

Une création réussie renvoie 201 Created avec le commentaire stocké, y compris les mentions analysées et l'auteur résolu :

{
  "id": 2,
  "content": "This looks good! @alice can you confirm the numbers?",
  "mentions": [{ "userId": 1, "username": "alice", "position": 21 }],
  "author": { "id": 2, "name": "Bob" },
  "created_at": "2025-01-15T11:00:00Z"
}

content est requis et limité à 10 000 caractères. Les jetons @username sont analysés en un tableau mentions (chacun avec le userId, le username et la position de caractère résolus), que les fonctionnalités en aval (par ex. les notifications) consomment.

Lire les commentaires

GET /api/tables/orders/records/123/comments       # lister tout
GET /api/tables/orders/records/123/comments/2      # commentaire unique

Le point de terminaison de liste renvoie le fil de commentaires de l'enregistrement. L'objet auteur est projeté sous une forme d'affichage sûre (id, name) — l'e-mail et les autres données personnelles ne sont jamais exposés dans les réponses de commentaires.

Modifier et supprimer

PATCH  /api/tables/orders/records/123/comments/2
DELETE /api/tables/orders/records/123/comments/2

La modification remplace content (en réanalysant les mentions) ; la suppression retire le commentaire. Les deux respectent le RBAC et les permissions de la table — généralement, un utilisateur peut modifier/supprimer ses propres commentaires, avec des droits plus étendus accordés aux rôles élevés.

Règles transversales

Préoccupation Comportement
Authentification Tous les points de terminaison nécessitent une session (401 sinon)
Existence Une table/un enregistrement/un commentaire inconnu renvoie 404 (anti-énumération)
Sécurité de l'auteur L'auteur du commentaire est injecté par le serveur ; les auteurs fournis par le client sont ignorés
Données personnelles La projection de l'auteur n'expose que id et name

Pages associées