circle
Représente un cercle organisationnel hiérarchique pouvant contenir des membres, des rôles et des cercles enfants. Les cercles organisent les équipes et les responsabilités au sein d'une organisation.
Champs
| Champ | Type | Description |
|---|---|---|
id | uuid | Identifiant unique du cercle |
orgId | uuid | Référence à l’organisation |
roleId | uuid | Référence au rôle associé à ce cercle |
parentId | uuid | Référence au cercle parent (optionnel, null pour les cercles de premier niveau) |
archivedAt | Timestamp | Date d’archivage du cercle ; null si actif |
createdAt | Timestamp | Date de création du cercle |
Relations
Relations objet :
org— L’organisation à laquelle ce cercle appartientparent— Le cercle parent (le cas échéant)role— Le rôle qui définit la raison d’être et les redevabilités de ce cercle
Relations tableau :
children— Cercles enfants au sein de ce cerclemembers— Appartenances au cercleleaders— Attributions de leadership du cercleparticipants— Tous les participants (y compris ceux hérités des cercles enfants)meetings— Réunions associées à ce cerclemeetings_recurring— Réunions récurrentes de ce cercletasks— Tâches assignées à ce cercledecisions— Décisions prises au sein de ce cerclethreads— Fils de discussion dans ce cerclehostCircleLinks— Liens où ce cercle héberge d’autres cerclesinvitedCircleLinks— Liens où ce cercle est invité dans d’autres cercles
Exemples de requêtes
Lister les cercles d’une organisation
query GetCircles($orgId: uuid!) {
circle(where: { orgId: { _eq: $orgId } }) {
id
role {
name
purpose
}
members {
member {
name
}
}
children {
id
role {
name
}
}
parent {
id
role {
name
}
}
}
}
Obtenir un cercle spécifique
query GetCircle($id: uuid!) {
circle_by_pk(id: $id) {
id
role {
name
}
}
}
Exemples de mutations
Créer un cercle
mutation CreateCircle {
insert_circle_one(
object: {
orgId: "your-org-id"
roleId: "role-id"
parentId: "parent-circle-id"
}
) {
id
role {
name
}
}
}
Déplacer un cercle
Le seul champ d’un cercle modifiable directement est son parentId (le déplacer sous un autre cercle).
mutation MoveCircle {
update_circle_by_pk(
pk_columns: { id: "circle-id" }
_set: { parentId: "new-parent-circle-id" }
) {
id
parentId
}
}
archivedAt n’est pas modifiable directement sur un cercle. L’archivage d’un
cercle est une opération imbriquée gérée par l’application : elle archive
ensemble le rôle, les membres, les rôles invités, les réunions, les réunions
récurrentes, les discussions, les tâches et les décisions de tout le
sous-arbre, et reste réversible depuis l’historique.
Permissions
L’accès aux cercles suit le governanceMode de l’organisation. En mode Free, tout membre peut modifier l’organigramme. En mode Agile, les leaders d’un cercle le modifient directement. En mode Strict, les changements de structure passent par des propositions, tandis que les propriétaires de l’organisation peuvent toujours modifier.
Les cercles forment un arbre hiérarchique via la relation parentId. Chaque
cercle doit avoir un rôle associé qui définit sa raison d’être et ses
redevabilités. Les participants d’un cercle incluent les membres directs ainsi
que les leaders des cercles enfants et liés. Les réunions, tâches et décisions
sont organisées au sein des cercles.