Terakhir diperbarui: 18 Oktober 2026

Bahasa Indonesia | English

Tujuan pembelajaran

Setelah menyelesaikan codelab ini, mahasiswa mampu:

Persiapan

1. Siklus generate sampai explain

AI mengusulkan, developer memutuskan:

1. Prompt -> instruksi + konteks proyek
2. Generate -> AI mengusulkan kode
3. Verify -> baca, grep, cek API nyata
4. Test -> analyze + unit/widget test
5. Refactor -> rapikan ke Clean Architecture
6. Explain -> jelaskan tanpa buka AI

Gagal di langkah 3-6 berarti vibe coding: cepat di awal, mahal di akhir.

2. Yang AI kuasai dan tidak

AreaContohSikap
KuatBoilerplate, pola umum, draft test, docsManfaatkan, tetap uji
LemahAPI baru, versi package, logika bisnis khususVerifikasi ekstra
BerbahayaToken auth, query SQL, aturan keamananJangan tempel secret; tulis manual

3. Tiga pola halusinasi Flutter

1. Formula 5 slot

Satu prompt baik mengisi lima slot secara singkat:

Peran: senior Flutter dev
Konteks: feature-first, Riverpod, SQLite+Dio
Tugas: tambah search judul notes + empty state
Batas: jangan ubah arsitektur, maks 80 baris
Output: kode + 3 test case + cara uji

2. Buruk vs baik

buruk: "buatkan search notes yang keren"
baik: "Tambah search judul notes.
  Arsitektur: presentation->domain<-data.
  Jangan panggil SQLite dari widget.
  Sertakan empty state + 1 widget test."

Prompt kabur menghasilkan kode kabur yang sulit diuji.

3. Beri konteks, bukan secret

1. Generate satu fitur kecil

Minta AI membuat pencarian judul notes lengkap dengan empty state. Batasi satu fitur agar mudah diverifikasi. Simpan prompt mentah dan output awal AI ke docs/ai-log.md.

2. Verifikasi 6 langkah

3. Contoh test bukti

test('filter abaikan huruf besar/kecil', () {
  expect(filterNotes(list, 'belanja'), hasLength(2));
});
test('query tak cocok kembalikan kosong', () {
  expect(filterNotes(list, 'zzz-tak-ada'), isEmpty);
});

1. Debug dengan test merah

1. Reproduksi: langkah + input pemicu bug
2. Isolasi: pindah filter ke use case murni
3. Test merah: buat test gagal pembukti bug
4. Perbaiki kecil, jalankan test + analyze
5. Catat akar masalah di docs/ai-log.md

Jangan mengulang prompt fix dong tanpa bukti error atau test gagal.

2. Refactor ke layer yang benar

widget (UI saja)
  -> notifier (state saja)
  -> use case (aturan filter/search)
  -> repository (SQLite / Dio)

Pecah fungsi di atas 40 baris dan pastikan tidak ada panggilan database dari widget.

3. Verifikasi akhir

flutter analyze
dart format --set-exit-if-changed .
flutter test

Peran AI pada codelab ini

AI boleh menjadi generator dan reviewer awal yang cepat, tetapi Anda yang memutuskan mana yang diterima, ditolak, atau disederhanakan.

AI Prompt Challenge

Minta AI mereview kode search Anda:

Review kode search Flutter ini sebagai senior dev.
Konteks: feature-first (presentation->domain<-data),
Riverpod, SQLite + Dio.
Fokus: kebenaran, arsitektur, test. Abaikan style.
Beri 3 temuan + level blocker/saran + alasan.

AI Verification Checklist

Refactoring Challenge

  1. Perkecil hasil AI di atas 80 baris menjadi fungsi/use case kecil yang bisa diuji.
  2. Pindahkan filter/search dari widget ke use case domain yang murni.
  3. Hapus import lintas layer dan pastikan analyze tetap bersih.

Testing

flutter test test/search_filter_test.dart
# + 1 widget test untuk empty state
# + uji manual 3 query + screenshot

Error umum dan solusinya

GejalaPenyebab umumSolusi
Method tidak adaHalusinasi APICek pub.dev + autocomplete
Import lintas layerKonteks kurangTegaskan batas + refactor
Semua test merahPrompt terlalu besarMinta 1 fitur kecil + 1 test
Prompt diulang terusTanpa reproduksiTulis langkah + test merah
Tak bisa menjelaskanTerima mentahBaca ulang + sederhanakan

Checklist verifikasi mandiri

Mini project / Industry Challenge

  1. Tambahkan satu fitur kecil dengan AI (search/filter/sort) + empty state.
  2. Sertakan prompt inti, konteks ditempel, dan output awal AI di docs/ai-log.md.
  3. Bukti mesin hijau: flutter analyze + flutter test di README.
  4. Tabel terima/tolak saran AI + alasan teknis + bukti grep/test.
  5. Push ke 09-week-9-ai-assisted-development/ berisi docs/, README.md, screenshots/. README menjelaskan fitur, prompt, stack, cara jalan, dan hasil.

Refleksi

Referensi pendukung