Dodaj komentarze do rekordów (zadań) w Blue z treścią w formacie rich text, załącznikami plików i @wzmiankami.


Dodaj komentarz

Mutacja createComment pozwala na dodawanie komentarzy do rekordów w Blue. Komentarze obsługują treść w formacie HTML, załączniki plików, @wzmianki i są automatycznie integrowane z systemem aktywności i powiadomień.

Podstawowy przykład

Dodaj prosty komentarz tekstowy do rekordu:

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
    }
  }
}

Zaawansowany przykład

Dodaj komentarz z bogatym formatowaniem, obrazami i przetwarzaniem edytora TipTap:

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
  }
}

Parametry wejściowe

CreateCommentInput

Parametr Typ Wymagany Opis
html String! ✅ Tak Treść HTML komentarza (zostanie oczyszczona dla bezpieczeństwa)
text String! ✅ Tak Wersja tekstowa treści komentarza
category CommentCategory! ✅ Tak Typ encji, do której odnosi się komentarz (użyj TODO dla rekordów)
categoryId String! ✅ Tak ID encji (rekordu), do której odnosi się komentarz
tiptap Boolean Nie Włącz oczyszczanie i przetwarzanie HTML specyficzne dla edytora TipTap

Wartości CommentCategory

Wartość Opis
TODO Komentarz do rekordu/zadania
DISCUSSION Komentarz do wątku dyskusyjnego
STATUS_UPDATE Komentarz do aktualizacji statusu

Pola odpowiedzi

Mutacja zwraca obiekt Comment z szczegółowymi informacjami:

Pole Typ Opis
id ID! Unikalny identyfikator komentarza
uid String! Alternatywny unikalny identyfikator
html String! Treść HTML komentarza
text String! Wersja tekstowa komentarza
category CommentCategory! Typ encji, do której odnosi się komentarz
createdAt DateTime! Kiedy komentarz został utworzony
updatedAt DateTime! Kiedy komentarz został ostatnio zaktualizowany
deletedAt DateTime Kiedy komentarz został usunięty (null, jeśli aktywny)
deletedBy User Użytkownik, który usunął komentarz
user User! Użytkownik, który utworzył komentarz
activity Activity Powiązany rekord aktywności
discussion Discussion Powiązana dyskusja (jeśli kategoria to DYSKUSJA)
statusUpdate StatusUpdate Powiązana aktualizacja statusu (jeśli kategoria to AKTUALIZACJA_STATUSU)
todo Todo Powiązany rekord (jeśli kategoria to ZADANIE)
isRead Boolean Czy bieżący użytkownik przeczytał ten komentarz
isSeen Boolean Czy bieżący użytkownik widział ten komentarz
aiSummary Boolean Czy ten komentarz został wygenerowany przez AI

Wymagane uprawnienia

Użytkownicy muszą mieć odpowiedni dostęp do projektu, aby komentować rekordy:

Poziom dostępu Może dodawać komentarze
OWNER ✅ Tak
ADMIN ✅ Tak
MEMBER ✅ Tak
CLIENT ✅ Tak
COMMENT_ONLY ✅ Tak
VIEW_ONLY ❌ Nie

Ważne: Użytkownik musi być członkiem projektu, który zawiera rekord i nie może mieć poziomu dostępu VIEW_ONLY.

Odpowiedzi błędów

UnauthorizedError

{
  "errors": [{
    "message": "You don't have permission to comment on this record",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Kiedy: Użytkownik nie ma uprawnień do komentowania określonego rekordu/encji.

ValidationError

{
  "errors": [{
    "message": "Invalid input parameters",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Kiedy: Brak wymaganych pól lub zawierają nieprawidłowe dane.

CommentNotFoundError

{
  "errors": [{
    "message": "Record not found",
    "extensions": {
      "code": "COMMENT_NOT_FOUND"
    }
  }]
}

Kiedy: Określony categoryId nie odpowiada istniejącemu rekordowi.

UserInputError

{
  "errors": [{
    "message": "Content validation failed",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Kiedy: Treść HTML nie przeszła oczyszczania lub zawiera złośliwy kod.

Ważne uwagi

Przetwarzanie treści

  • Oczyszczanie HTML: Cała treść HTML jest automatycznie oczyszczana, aby zapobiec atakom XSS
  • Ekstrakcja plików: Obrazy i załączniki osadzone w HTML są ekstraktowane i przechowywane w S3
  • Tryb TipTap: Gdy tiptap: true, używa specjalistycznego oczyszczania dla treści edytora TipTap
  • @Wzmianki: Wzmianki użytkowników w komentarzach są automatycznie przetwarzane i wyzwalają powiadomienia

Rozważania dotyczące wydajności

  • Komentarze są automatycznie indeksowane do wyszukiwania
  • Duże załączniki obrazów są przetwarzane asynchronicznie
  • Każdy komentarz tworzy rekord aktywności dla osi czasu projektu

Efekty uboczne

Dodanie komentarza uruchamia kilka zautomatyzowanych procesów:

  • Tworzenie aktywności: Tworzy rekord aktywności widoczny w osi czasu projektu
  • Indeksowanie wyszukiwania: Treść komentarza jest dodawana do indeksu wyszukiwania projektu
  • Powiadomienia: Wysyła powiadomienia e-mail, push i w aplikacji do odpowiednich użytkowników
  • Aktualizacje w czasie rzeczywistym: Publikuje komentarz do subskrypcji GraphQL dla aktualizacji na żywo
  • Webhooki: Uruchamia zewnętrzny webhook, jeśli jest skonfigurowany dla projektu
  • Przetwarzanie @Wzmianek: Przetwarza wzmianki użytkowników i wysyła ukierunkowane powiadomienia
  • Przetwarzanie plików: Ekstrahuje i przetwarza wszelkie osadzone obrazy lub pliki z treści HTML

Bezpieczeństwo treści

  • Cały HTML jest oczyszczany przy użyciu standardowych bibliotek branżowych
  • Przesyłanie plików jest weryfikowane pod kątem typu i rozmiaru
  • Złośliwe treści są automatycznie usuwane
  • Treści generowane przez użytkowników są poprawnie kodowane we wszystkich kontekstach

Funkcje integracji

  • Kanał aktywności: Komentarze pojawiają się w osi czasu aktywności projektu
  • Wyszukiwanie: Treść komentarza jest wyszukiwalna w projekcie
  • Powiadomienia: Konfigurowalne preferencje powiadomień dla różnych typów komentarzy
  • W czasie rzeczywistym: Komentarze pojawiają się natychmiast dla innych użytkowników przeglądających ten sam rekord
  • Wsparcie mobilne: Komentarze są w pełni wspierane w aplikacjach mobilnych

Powiązane punkty końcowe

  • Lista komentarzy: Zapytanie o komentarze w celu pobrania istniejących komentarzy do rekordów
  • Aktualizacja komentarza: Modyfikacja istniejącej treści komentarza
  • Usunięcie komentarza: Usunięcie komentarzy z odpowiednimi uprawnieniami
  • Lista rekordów: Zapytanie o zadania w celu znalezienia rekordów, do których można dodać komentarze

Asystent AI

Odpowiedzi są generowane przy użyciu sztucznej inteligencji i mogą zawierać błędy.

Jak mogę Ci pomóc?

Zapytaj mnie o cokolwiek dotyczącego Blue lub tej dokumentacji.

Wciśnij Enter, aby wysłać • Shift+Enter, aby dodać nową linię • ⌘I, aby otworzyć