Tambahkan komentar ke catatan (todo) di Blue dengan konten teks kaya, lampiran file, dan @sebutan.


Tambah Komentar

Mutasi createComment memungkinkan Anda untuk menambahkan komentar ke catatan di Blue. Komentar mendukung konten HTML yang kaya, lampiran file, @sebutan, dan secara otomatis terintegrasi dengan umpan aktivitas dan sistem notifikasi.

Contoh Dasar

Tambahkan komentar teks sederhana ke sebuah catatan:

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

Contoh Lanjutan

Tambahkan komentar dengan format kaya, gambar, dan pemrosesan editor 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
  }
}

Parameter Input

CreateCommentInput

Parameter Tipe Diperlukan Deskripsi
html String! ✅ Ya Konten HTML dari komentar (akan disanitasi untuk keamanan)
text String! ✅ Ya Versi teks biasa dari konten komentar
category CommentCategory! ✅ Ya Tipe entitas yang dikomentari (gunakan TODO untuk catatan)
categoryId String! ✅ Ya ID dari entitas (catatan) yang dikomentari
tiptap Boolean Tidak Aktifkan sanitasi dan pemrosesan HTML khusus editor TipTap

Nilai CommentCategory

Nilai Deskripsi
TODO Komentar pada item catatan/todo
DISCUSSION Komentar pada thread diskusi
STATUS_UPDATE Komentar pada pembaruan status

Bidang Respons

Mutasi mengembalikan objek Komentar dengan detail komprehensif:

Bidang Tipe Deskripsi
id ID! Pengidentifikasi unik untuk komentar
uid String! Pengidentifikasi unik alternatif
html String! Konten HTML dari komentar
text String! Versi teks biasa dari komentar
category CommentCategory! Tipe entitas yang dikomentari
createdAt DateTime! Waktu komentar dibuat
updatedAt DateTime! Waktu komentar terakhir diperbarui
deletedAt DateTime Waktu komentar dihapus (null jika aktif)
deletedBy User Pengguna yang menghapus komentar
user User! Pengguna yang membuat komentar
activity Activity Catatan aktivitas terkait
discussion Discussion Diskusi terkait (jika kategori adalah DISKUSI)
statusUpdate StatusUpdate Pembaruan status terkait (jika kategori adalah PEMBARUAN_STATUS)
todo Todo Catatan terkait (jika kategori adalah TODO)
isRead Boolean Apakah pengguna saat ini telah membaca komentar ini
isSeen Boolean Apakah pengguna saat ini telah melihat komentar ini
aiSummary Boolean Apakah komentar ini dihasilkan oleh AI

Izin yang Diperlukan

Pengguna harus memiliki akses proyek yang sesuai untuk mengomentari catatan:

Tingkat Akses Dapat Menambahkan Komentar
OWNER ✅ Ya
ADMIN ✅ Ya
MEMBER ✅ Ya
CLIENT ✅ Ya
COMMENT_ONLY ✅ Ya
VIEW_ONLY ❌ Tidak

Penting: Pengguna harus menjadi anggota proyek yang berisi catatan dan TIDAK boleh memiliki tingkat akses VIEW_ONLY.

Respons Kesalahan

UnauthorizedError

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

Kapan: Pengguna tidak memiliki izin untuk mengomentari catatan/entitas yang ditentukan.

ValidationError

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

Kapan: Bidang yang diperlukan hilang atau mengandung data yang tidak valid.

CommentNotFoundError

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

Kapan: categoryId yang ditentukan tidak sesuai dengan catatan yang ada.

UserInputError

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

Kapan: Konten HTML gagal disanitasi atau mengandung kode berbahaya.

Catatan Penting

Pemrosesan Konten

  • Sanitasi HTML: Semua konten HTML secara otomatis disanitasi untuk mencegah serangan XSS
  • Ekstraksi File: Gambar dan lampiran yang disematkan dalam HTML diekstraksi dan disimpan di S3
  • Mode TipTap: Ketika tiptap: true, menggunakan sanitasi khusus untuk konten editor TipTap
  • @Sebut: Sebutan pengguna dalam komentar secara otomatis diproses dan memicu notifikasi

Pertimbangan Kinerja

  • Komentar diindeks untuk pencarian secara otomatis
  • Lampiran gambar besar diproses secara asinkron
  • Setiap komentar membuat catatan aktivitas untuk garis waktu proyek

Efek Samping

Menambahkan komentar memicu beberapa proses otomatis:

  • Pembuatan Aktivitas: Membuat catatan aktivitas yang terlihat di garis waktu proyek
  • Pengindeksan Pencarian: Konten komentar ditambahkan ke indeks pencarian proyek
  • Notifikasi: Mengirim email, push, dan notifikasi dalam aplikasi kepada pengguna yang relevan
  • Pembaruan Waktu Nyata: Menerbitkan komentar ke langganan GraphQL untuk pembaruan langsung
  • Webhook: Memicu webhook eksternal jika dikonfigurasi untuk proyek
  • Pemrosesan @Sebut: Memproses sebutan pengguna dan mengirim notifikasi yang ditargetkan
  • Pemrosesan File: Mengekstrak dan memproses gambar atau file yang disematkan dari konten HTML

Keamanan Konten

  • Semua HTML disanitasi menggunakan pustaka standar industri
  • Unggahan file divalidasi untuk tipe dan ukuran
  • Konten berbahaya secara otomatis dihapus
  • Konten yang dihasilkan pengguna di-escape dengan benar di semua konteks

Fitur Integrasi

  • Umpan Aktivitas: Komentar muncul di garis waktu aktivitas proyek
  • Pencarian: Konten komentar dapat dicari dalam proyek
  • Notifikasi: Preferensi notifikasi yang dapat dikonfigurasi untuk berbagai jenis komentar
  • Waktu Nyata: Komentar muncul secara instan untuk pengguna lain yang melihat catatan yang sama
  • Dukungan Seluler: Komentar sepenuhnya didukung dalam aplikasi seluler

Endpoint Terkait

  • Daftar Komentar: Kuery komentar untuk mengambil komentar yang ada pada catatan
  • Perbarui Komentar: Memodifikasi konten komentar yang ada
  • Hapus Komentar: Menghapus komentar dengan otorisasi yang tepat
  • Daftar Catatan: Kuery todo untuk menemukan catatan yang dapat dikomentari

Asisten AI

Respon dihasilkan menggunakan AI dan mungkin mengandung kesalahan.

Bagaimana saya bisa membantu Anda?

Tanyakan apa saja tentang Blue atau dokumentasi ini.

Masukkan untuk mengirim • Shift+Masukkan untuk baris baru • ⌘I untuk membuka