Skip to content

Kanban ​

<!-- generated:meta -->

Grupui
Planeresource
Spec structKanbanSpec

<!-- /generated:meta -->

Kapan Memakai ​

kind: Kanban adalah papan kolom drag-drop — tiap kartu satu record entity, tiap kolom satu nilai status, drag antar kolom = transisi state.

Kapan memakai Kanban:

  • Status sebagai dimensi kerja utama (support queue, order fulfillment, triage)
  • Pemindahan status = aksi utama

Kapan TIDAK pakai Kanban:

  • Operasi utama sort/filter/edit banyak kolom → kind: Table

Sumber kontrak: docs/spec/frontend/06-page-kinds.md §4.

Contoh Manifest ​

yaml
apiVersion: formspec.dev/v1
kind: Kanban
metadata: { name: support-board, module: helpdesk }
spec:
  entity: helpdesk.ticket
  status_field: status      # wajib — field state machine/enum yang jadi kolom
  realtime: true

Atribut ​

<!-- generated:attributes -->

AtributTipeWajibContohDeskripsi
publicboolean—trueIf true (default), a route /module/kanban/<name> is auto-generated.
entitystring✅helpdesk.ticket
status_fieldstring✅status
columns[]KanbanColumn—
card_templateKanbanCard—
realtimeboolean—default true (§12)
filters[]FilterSpec—
fixed_filters[]FilterSpec—
searchboolean—
row_actions[]TableAction—
max_cards_per_columninteger—
sortableboolean—enable within-column drag-to-reorder
position_fieldstring—field storing user-adjustable position (e.g. "queue_position")
drag_guardstring—FormSpecExpr pre-check UX before drop: evaluated against the record + target column; drop blocked when false. Server state-machine guard remains authority.

<!-- /generated:attributes -->

Gotchas ​

  • status_field WAJIB saat ini — zero-config derivasi kolom masih Open (tracking docs_internal/plan/kanban-full-implementation.md).
  • Drag = state transition — memanggil action via transisi cocok; guard state machine dievaluasi server-side (otoritas). Transisi tidak dideklarasi → tidak ada drop target; server tolak STATE_TRANSITION_ERROR.
  • Permission drag = permission action transisi itu.
  • sortable: true butuh position_field — kombinasi tanpa itu tidak valid (manifest validation wajib menolak).
  • drag_guard & wip_limit masih Open — pengganti sementara max_cards_per_column.
  • No-silent-drop — kolom ramai paginasi cursor-based, tak boleh motong kartu tanpa indikator "muat lebih".
  • Cross-ref: docs/spec/frontend/06-page-kinds.md §4 · ai_skills/formspec-kinds

Standar terbuka (CC0) dengan implementasi referensi.