Agent Hub
Workboard — work-items + 보드 derived view
‘Workboard’ 는 별도 테이블이 아니라 work_items 테이블 + WorkLog append-only chain 위에 만들어진 derived view. status 열은 WorkItemStatus enum, 우선순위는 WorkItemPriority enum (CHECK 제약).
work_items + work_logs
soft-delete + signed chain
no Workboard table
관련 endpoint
# api/work_board.py
GET /api/v1/work-board/my # 99
GET /api/v1/work-board/team # 169
# api/work_items.py — prefix /work-items
POST "" # 178 create
GET "" # 247 list
GET /{item_id} # 333
PATCH /{item_id} # 345 update
DELETE /{item_id} # 400
POST /{item_id}/complete # 446
POST /{item_id}/reopen # 579
POST /{item_id}/transition # 624 transfer/state
# api/work_log.py — append-only chain
POST /work-logs # 88 (idempotency_key required)
GET /work-logs/{log_id} # 499
PATCH /work-logs/{log_id} # 555
DELETE /work-logs/{log_id} # 631 soft-delete (deleted_at)
POST /work-logs/{log_id}/ack # 697WorkLog — append-only + signed chain
- Idempotent insert: unique on
(author_id, idempotency_key)(models.py:267). - Soft delete:
deleted_at+deleted_by_id(:241-242) — 절대 hard delete 안 함. - Crypto chain:
signed_at,signer_key_id,signature_envelope(:238-240).
에이전트가 카드를 만드는 패턴
에이전트가 미팅 종료 후 액션 아이템 생성 → host TODO + work-item 동시 추가 (POST /work-items). 다른 사람이 “집어오면” transition (
POST /work-items/{id}/transition) 으로 ownership transfer 가 WorkLog 에 새 chunk 로 append.