thread
Représente une discussion ou un fil de conversation dans Rolebase. Les discussions sont associées à des cercles, supportent des activités (messages), des réactions, des membres supplémentaires, et peuvent référencer des tâches, réunions et décisions.
Champs
| Champ | Type | Description |
|---|---|---|
id | uuid | Identifiant unique de la discussion (généré automatiquement) |
orgId | uuid | Référence à l'organisation |
circleId | uuid | Référence au cercle |
initiatorMemberId | uuid | Référence au membre qui a initié la discussion |
title | String | Titre de la discussion |
createdAt | Timestamp | Date de création de la discussion (par défaut : horodatage actuel) |
archived | Boolean | Indique si la discussion est archivée (par défaut : false) |
private | Boolean | Indique si la discussion est privée (par défaut : false) |
status | Thread_Status_Enum | Statut actuel de la discussion (ex. : Active, Preparation, Closed) |
Relations
Relations objet
org— L’organisation à laquelle cette discussion appartientcircle— Le cercle auquel cette discussion est associéeinitiatorMember— Le membre qui a initié la discussion
Relations tableau
activities— Messages et mises à jour dans la discussion (voir thread_activity)extra_members— Membres supplémentaires ajoutés à la discussion (voir thread_extra_member)member_status— Suivi du statut de lecture par membrelogs— Journaux d’activité de cette discussion
Statut des membres
Le thread_member_status suit le statut de lecture de chaque membre :
lastReadActivityId— Identifiant de la dernière activité luelastReadDate— Date de la dernière lecture de la discussion par le membrememberId— Membre dont le statut est suivi
Exemples de requêtes
Lister les discussions d’une organisation
query GetThreads($orgId: uuid!) {
thread(where: { orgId: { _eq: $orgId } }) {
id
title
status
createdAt
circle {
role {
name
}
}
}
}
Obtenir une discussion spécifique avec ses activités
query GetThread($id: uuid!) {
thread_by_pk(id: $id) {
id
title
status
createdAt
circle {
role {
name
}
}
initiatorMember {
name
}
activities {
id
type
data
createdAt
user {
displayName
}
reactions {
id
shortcode
}
}
member_status {
lastReadDate
member {
name
}
}
}
}
Exemples de mutations
Créer une discussion
mutation CreateThread {
insert_thread_one(
object: {
orgId: "your-org-id"
circleId: "circle-id"
title: "Discussion about new feature"
initiatorMemberId: "member-id"
status: Active
private: false
extra_members: {
data: [{ memberId: "member-id-1" }, { memberId: "member-id-2" }]
}
}
) {
id
title
status
}
}
Ajouter une activité à une discussion
mutation AddThreadActivity {
insert_thread_activity_one(
object: {
threadId: "thread-id"
type: Message
data: { message: "This is a message" }
userId: "user-id"
}
) {
id
type
data
}
}
Mettre à jour le statut d’une discussion
mutation UpdateThreadStatus {
update_thread_by_pk(
pk_columns: { id: "thread-id" }
_set: { status: Closed }
) {
id
status
}
}
Permissions
L’accès aux discussions est contrôlé par plusieurs facteurs :
- Appartenance au cercle — Les participants du cercle peuvent accéder aux discussions de leur cercle
- Paramètres de confidentialité — Les discussions privées ne sont visibles que par les participants du cercle et les membres supplémentaires
- Rôle dans l’organisation — Les membres de l’organisation peuvent accéder aux discussions non privées
- Membres supplémentaires — Participants additionnels ajoutés via thread_extra_member
- Les activités de discussion peuvent être créées par les participants et les membres supplémentaires
- Le statut des membres peut être mis à jour par le membre concerné
Les discussions supportent du contenu riche via des données d’activité en JSON, des réactions pour l’engagement, et des références croisées vers des tâches, réunions et décisions. Des membres peuvent être ajoutés au-delà du cercle via les membres supplémentaires pour une collaboration élargie.