# Commentaires

- Human documentation: [https://docs.univer.ai/fr-FR/guides/bases/features/thread-comment](https://docs.univer.ai/fr-FR/guides/bases/features/thread-comment)

- Agent Markdown: [https://docs.univer.ai/fr-FR/guides/bases/features/thread-comment.md](https://docs.univer.ai/fr-FR/guides/bases/features/thread-comment.md)

- Requested language: `fr-FR`

- Content language: `fr-FR`

- Documentation version: `1.2.0`

- Source: [bases/features/thread-comment.fr-FR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/thread-comment.fr-FR.mdx)

---

#### Package metadata

```json
{
  "preset": [],
  "plugins": [
    {
      "client": "@univerjs/thread-comment",
      "facade": "@univerjs/thread-comment/facade"
    },
    {
      "client": "@univerjs/thread-comment-ui",
      "locale": "@univerjs/thread-comment-ui/locale/fr-FR",
      "style": "@univerjs/thread-comment-ui/lib/index.css"
    },
    {
      "client": "@univerjs-pro/bases-thread-comment",
      "facade": "@univerjs-pro/bases-thread-comment/facade"
    },
    {
      "client": "@univerjs-pro/bases-thread-comment-ui",
      "locale": "@univerjs-pro/bases-thread-comment-ui/locale/fr-FR",
      "style": "@univerjs-pro/bases-thread-comment-ui/lib/index.css"
    }
  ],
  "license": true,
  "server": "optional"
}
```

Discutez des tâches, commandes et autres enregistrements. Les commentaires restent associés à l’enregistrement dans les vues Grille, Kanban, Galerie, Calendrier et Gantt ; changer de vue ne crée pas une discussion distincte.

## Enregistrer les plugins

Ajoutez-les après les plugins de base et d’interface de Bases :

#### npm

```bash
npm install @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### pnpm

```bash
pnpm add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### yarn

```bash
yarn add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

#### bun

```bash
bun add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-ui
```

```ts
import { UniverBasesThreadCommentPlugin } from '@univerjs-pro/bases-thread-comment'
import { UniverBasesThreadCommentUIPlugin } from '@univerjs-pro/bases-thread-comment-ui'

import '@univerjs-pro/bases-thread-comment/facade'
import '@univerjs/thread-comment/facade'
import '@univerjs-pro/bases-thread-comment-ui/lib/index.css'

univer.registerPlugin(UniverBasesThreadCommentPlugin)
univer.registerPlugin(UniverBasesThreadCommentUIPlugin)
```

Fusionnez les ressources linguistiques des paquets de commentaires et configurez l’utilisateur actuel de l’application. Le plugin UI ajoute les commandes de commentaire des enregistrements ; le plugin de données associe les commentaires aux enregistrements.

## Ajouter et lire des commentaires

```ts
const record = univerAPI.getActiveBase()?.getTables()[0]?.getRecords()[0]
if (!record) throw new Error('Create a record first')

await record.createCommentAsync('Please confirm the delivery date.')
const comments = record.getComments()
console.log(comments.map(({ root }) => root.id))
```

`getComments()` lit les commentaires chargés localement. Avec une source distante, `await record.listCommentsAsync()` synchronise les fils connus avant de les renvoyer. Consultez la [Facade des commentaires](https://docs.univer.ai/fr-FR/reference/facade/thread-comment.md) pour les réponses, les mises à jour et la suppression.

## Enregistrement et discussions partagées

Les commentaires locaux peuvent être enregistrés comme ressources de Base via `base.save()`. Enregistrez les plugins de commentaires avant de restaurer un instantané.

Les discussions partagées nécessitent aussi un service de commentaires, une source de données et des autorisations. La collaboration documentaire seule ne connecte pas les commentaires. Suivez les [modules d’extension Office](https://docs.univer.ai/fr-FR/server/collaboration/extensions.md), puis testez la création, la lecture, les autorisations et la réouverture avec deux comptes.

## Opérations communes

Importez la Facade commune et celle du produit. Les méthodes du produit créent les ancres stables ; l’API commune gère réponses, mises à jour, résolution et suppression. `getComments()` lit l’état local. `listCommentsAsync()` synchronise les fils déjà connus via la source configurée ; cette méthode ne découvre pas tous les fils du serveur.

```ts
import '@univerjs/thread-comment/facade'

const [thread] = univerAPI.getComments({ resolved: false })
if (thread) {
  await univerAPI.replyCommentAsync({
    unitId: thread.unitId,
    subUnitId: thread.subUnitId,
    threadId: thread.threadId,
    content: 'Reviewed.',
  })
}
```

## Discussions partagées

Intégrez Comment Service et Endpoint avec le [Server SDK](https://docs.univer.ai/fr-FR/server/collaboration/extensions.md), puis enregistrez `UniverThreadCommentDataSourcePlugin` de `@univerjs-pro/thread-comment-datasource` après la collaboration et la licence. La source fournie utilise `/universer-api/comment/unit/{unitId}/...` et `/universer-api/user/list` : exposez ces routes dans l’application. Le serveur doit autoriser la lecture et l’écriture des commentaires indépendamment de la modification du document.
