Feature · User Story E01-US01Admin CMS menyiapkan data e-book

Epic #1 · Story #2 · Sprint 01

📖 Ceritanya

SebagaiAdmin CMS / pengelola konten
Aku maubikin & edit data e-book di CMS
Supayakonten siap disiapkan, dicek, lalu nanti tampil di aplikasi iOS

Ini fondasi pertama sebelum aplikasi baca bisa menampilkan katalog. Data yang disimpan tetap Draft dan belum terlihat pembaca.

📦 Satu story = satu paket

📖 story✅ acceptance🔌 api-contract🎨 design🧠 technical-impact🧪 testing🧾 tasks

⛔ Di luar story ini

  • Tampilan di aplikasi pembaca
  • Publish / unpublish
  • Upload cover & import Word
  • Pembayaran & akun

👀 Sudah direview

BackendDatabaseUI/UXQAMobileFrontend

Review berurutan, hasilnya "partial aligned" lalu dikonsolidasi.

cms.coasread / content

✅ Acceptance criteria bisnis Given · When · Then

AC-1 Buat data baru

Given admin di halaman konten, When klik buat baru, Then muncul form data e-book.

AC-2 Isi data wajib

Given admin mengisi judul, When simpan, Then data dikirim untuk divalidasi & disimpan sebagai draft.

AC-3 Pesan validasi

Given judul kosong/salah, When simpan, Then muncul pesan jelas dan data salah gak tersimpan.

AC-4 Tetap draft

Given data valid, When disimpan, Then statusnya draft dan gak otomatis tampil ke pembaca.

AC-5 Daftar konten

Given ada data, When buka daftar, Then terlihat judul, status, waktu update.

AC-6 Kosong & error

Given belum ada data / gagal muat, When buka daftar, Then muncul pesan + cara lanjut.

🔧 AC teknis (contoh)

  • Belum login → 401, gak punya izin → 403
  • Field ngawur ditolak → 422
  • Edit bentrok → 412, tanpa If-Match → 428
  • Semua respons pakai envelope standar
  • Buat & edit tercatat di audit
  • OpenAPI wajib ada sebelum dianggap siap

Total: 7 AC bisnis, 13 AC backend, 10 AC database, 10 AC tambahan dari review.

🔌 Endpoint /api/v1/admin/content-records · Bearer token

GET/content-recordsDaftar + cari, filter, urut, halamanread
GET/content-records/{id}Detail + ETagread
POST/content-recordsBuat draft baru → 201create
PATCH/content-records/{id}Update, wajib If-Matchupdate
200 OK201 Created400401403404412422428429500

Contoh


    

🧾 Tiket di Taiga Sprint 01 — CMS Metadata Foundation

#3 BackendAPI data e-book (list, detail, buat, update)✓ Siap dites
#4 DatabaseSkema, relasi, index, audit✓ Siap dites
#5 FrontendSlicing UI daftar & form + sambung APIBaru
#6 MobileCek batas: mobile gak boleh pakai API adminBaru

🧪 Cara ngetesnya

  • Tiap AC dipetakan ke tesnya
  • Tes kontrak API (OpenAPI)
  • Tes database & integrasi
  • Tes E2E CMS pakai Playwright
  • Mobile (Maestro): gak relevan di story ini

Spesifikasi & eksekusi tes dipegang QA, bukan PM.

Sumber: docs/features/…/e-01---cms-content-foundation/e01-us01--* · wireframe ASCII di design.md di-slice jadi tampilan HTML