Voeg opmerkingen toe aan records (to-do's) in Blue met rijke tekstinhoud, bestandsbijlagen en @vermeldingen.
Voeg Opmerking Toe
De createComment mutatie stelt je in staat om opmerkingen toe te voegen aan records in Blue. Opmerkingen ondersteunen rijke HTML-inhoud, bestandsbijlagen, @vermeldingen en zijn automatisch geïntegreerd met de activiteitenfeed en het notificatiesysteem.
Basisvoorbeeld
Voeg een eenvoudige tekstopmerking toe aan een record:
mutation AddComment {
createComment(
input: {
html: "<p>This task is progressing well!</p>"
text: "This task is progressing well!"
category: TODO
categoryId: "clm4n8qwx000008l0g4oxdqn7"
}
) {
id
html
text
createdAt
user {
id
name
}
}
}
Geavanceerd Voorbeeld
Voeg een opmerking toe met rijke opmaak, afbeeldingen en TipTap-editorverwerking:
mutation AddCommentAdvanced {
createComment(
input: {
html: "<p>Here's my <strong>feedback</strong> on this task:</p><ul><li>Great progress on the design</li><li>Need to review the API integration</li></ul><p>Attaching screenshot:</p><img src='data:image/png;base64,iVBOR...' />"
text: "Here's my feedback on this task: - Great progress on the design - Need to review the API integration Attaching screenshot:"
category: TODO
categoryId: "clm4n8qwx000008l0g4oxdqn7"
tiptap: true
}
) {
id
html
text
createdAt
user {
id
name
avatar
}
activity {
id
}
isRead
isSeen
}
}
Invoervelden
CreateCommentInput
Parameter | Type | Vereist | Beschrijving |
---|---|---|---|
html |
String! | ✅ Ja | HTML-inhoud van de opmerking (wordt gesaneerd voor beveiliging) |
text |
String! | ✅ Ja | Gewone tekstversie van de opmerkinginhoud |
category |
CommentCategory! | ✅ Ja | Type entiteit waarop wordt opgemerkt (gebruik TODO voor records) |
categoryId |
String! | ✅ Ja | ID van de entiteit (record) waarop wordt opgemerkt |
tiptap |
Boolean | Nee | Schakel TipTap-editor-specifieke HTML-sanitization en verwerking in |
Waarden van CommentCategory
Waarde | Beschrijving |
---|---|
TODO |
Opmerking over een record/to-do-item |
DISCUSSION |
Opmerking over een discussie-thread |
STATUS_UPDATE |
Opmerking over een statusupdate |
Responsvelden
De mutatie retourneert een Comment-object met uitgebreide details:
Veld | Type | Beschrijving |
---|---|---|
id |
ID! | Unieke identificatie voor de opmerking |
uid |
String! | Alternatieve unieke identificatie |
html |
String! | HTML-inhoud van de opmerking |
text |
String! | Gewone tekstversie van de opmerking |
category |
CommentCategory! | Type entiteit waarop is opgemerkt |
createdAt |
DateTime! | Wanneer de opmerking is aangemaakt |
updatedAt |
DateTime! | Wanneer de opmerking voor het laatst is bijgewerkt |
deletedAt |
DateTime | Wanneer de opmerking is verwijderd (null als actief) |
deletedBy |
User | Gebruiker die de opmerking heeft verwijderd |
user |
User! | Gebruiker die de opmerking heeft aangemaakt |
activity |
Activity | Geassocieerd activiteitrecord |
discussion |
Discussion | Geassocieerde discussie (als categorie DISCUSSIE) |
statusUpdate |
StatusUpdate | Geassocieerde statusupdate (als categorie STATUS_UPDATE) |
todo |
Todo | Geassocieerd record (als categorie TODO) |
isRead |
Boolean | Of de huidige gebruiker deze opmerking heeft gelezen |
isSeen |
Boolean | Of de huidige gebruiker deze opmerking heeft gezien |
aiSummary |
Boolean | Of deze opmerking door AI is gegenereerd |
Vereiste Machtigingen
Gebruikers moeten de juiste projecttoegang hebben om opmerkingen te kunnen maken op records:
Toegangsniveau | Kan Opmerkingen Toevoegen |
---|---|
OWNER |
✅ Ja |
ADMIN |
✅ Ja |
MEMBER |
✅ Ja |
CLIENT |
✅ Ja |
COMMENT_ONLY |
✅ Ja |
VIEW_ONLY |
❌ Nee |
Belangrijk: De gebruiker moet lid zijn van het project dat het record bevat en mag NIET het VIEW_ONLY
toegangsniveau hebben.
Foutreacties
UnauthorizedError
{
"errors": [{
"message": "You don't have permission to comment on this record",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Wanneer: De gebruiker heeft geen toestemming om op de opgegeven record/entiteit te reageren.
ValidationError
{
"errors": [{
"message": "Invalid input parameters",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Wanneer: Vereiste velden ontbreken of bevatten ongeldige gegevens.
CommentNotFoundError
{
"errors": [{
"message": "Record not found",
"extensions": {
"code": "COMMENT_NOT_FOUND"
}
}]
}
Wanneer: De opgegeven categoryId
komt niet overeen met een bestaand record.
UserInputError
{
"errors": [{
"message": "Content validation failed",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Wanneer: HTML-inhoud faalt bij sanitization of bevat kwaadaardige code.
Belangrijke Opmerkingen
Inhoudsverwerking
- HTML-sanitization: Alle HTML-inhoud wordt automatisch gesaneerd om XSS-aanvallen te voorkomen
- Bestandsextractie: Afbeeldingen en bijlagen die in HTML zijn ingebed, worden geëxtraheerd en opgeslagen in S3
- TipTap-modus: Wanneer
tiptap: true
, gebruikt gespecialiseerde sanitization voor TipTap-editorinhoud - @Vermeldingen: Gebruikersvermeldingen in opmerkingen worden automatisch verwerkt en activeren meldingen
Prestatieoverwegingen
- Opmerkingen worden automatisch geïndexeerd voor zoekopdrachten
- Grote afbeeldingsbijlagen worden asynchroon verwerkt
- Elke opmerking creëert een activiteitrecord voor de projecttijdlijn
Bijwerkingen
Het toevoegen van een opmerking activeert verschillende geautomatiseerde processen:
- Activiteitcreatie: Creëert een activiteitrecord dat zichtbaar is in de projecttijdlijn
- Zoekindexering: Opmerkinginhoud wordt toegevoegd aan de projectzoekindex
- Meldingen: Verstuurt e-mail-, push- en in-app-meldingen naar relevante gebruikers
- Realtime Updates: Publiceert opmerking naar GraphQL-abonnementen voor live-updates
- Webhooks: Activeert externe webhook als deze is geconfigureerd voor het project
- @Vermelding Verwerking: Verwerkt gebruikersvermeldingen en verstuurt gerichte meldingen
- Bestandsverwerking: Extraheert en verwerkt eventuele ingesloten afbeeldingen of bestanden uit HTML-inhoud
Inhoudsbeveiliging
- Alle HTML wordt gesaneerd met behulp van industriestandaardbibliotheken
- Bestandsuploads worden gevalideerd op type en grootte
- Kwaadaardige inhoud wordt automatisch verwijderd
- Door gebruikers gegenereerde inhoud wordt op de juiste manier ontsnapt in alle contexten
Integratiefuncties
- Activiteitenfeed: Opmerkingen verschijnen in de projectactiviteitstijdlijn
- Zoeken: Opmerkinginhoud is doorzoekbaar binnen het project
- Meldingen: Configureerbare meldingsvoorkeuren voor verschillende opmerkingstypen
- Realtime: Opmerkingen verschijnen onmiddellijk voor andere gebruikers die hetzelfde record bekijken
- Mobiele Ondersteuning: Opmerkingen worden volledig ondersteund in mobiele applicaties
Gerelateerde Eindpunten
- Lijst Opmerkingen: Vraag opmerkingen op om bestaande opmerkingen op records te verkrijgen
- Update Opmerking: Wijzig bestaande opmerkinginhoud
- Verwijder Opmerking: Verwijder opmerkingen met de juiste autorisatie
- Lijst Records: Vraag to-do's op om records te vinden die becommentarieerd kunnen worden