{"id":"cmv05qyqh0008tm4dymmg8zuf","slug":"incremental-sync","judul":"Incremental Sync","deskripsi":"Sinkronisasi produk incremental — hanya download yang berubah","parentId":"cmv05qyq30005tm4da37m4g83","urut":0,"kategori":"mobile","tag":"[\"rust\",\"sync\",\"optimization\"]","status":"aktif","versi":"0.1.133","konsep":"","createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:18:38.681Z","bagian":[{"id":"cmv05qyqh0009tm4dzdzw4tiz","blueprintId":"cmv05qyqh0008tm4dymmg8zuf","judul":"Ringkasan","konten":"Test edit dari production API","media":"[]","urut":0,"createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:19:12.316Z"},{"id":"cmv05qyqh000atm4dt7qyghrn","blueprintId":"cmv05qyqh0008tm4dymmg8zuf","judul":"Data Model","konten":"```rust\nstruct RemoteProduk {\n    id: String,\n    nama: String,\n    harga: i64,\n    updated_at: Option<String>,\n}\n```","media":"[]","urut":1,"createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:18:38.681Z"},{"id":"cmv05qyqh000btm4dauyaovlt","blueprintId":"cmv05qyqh0008tm4dymmg8zuf","judul":"Alur","konten":"- First sync: `since=null` → full pull\n- Sync berikutnya: `since=last_sync_ts` → hanya yang berubah\n- Server query: `WHERE updated_at > since`\n- Client: upsert ke DB lokal, update `sync_produk_at`\n- Retry 2× kalau fetch gagal","media":"[]","urut":2,"createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:18:38.681Z"},{"id":"cmv05qyqh000ctm4dvs6heyvb","blueprintId":"cmv05qyqh0008tm4dymmg8zuf","judul":"API","konten":"```\nGET /api/produk?semua=1&since=2026-10-08T12:00:00Z\n\nResponse: [{ id, nama, harga, updated_at }]\n```\n\nBackwards compatible: tanpa `since` = full pull.","media":"[]","urut":3,"createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:18:38.681Z"},{"id":"cmv05qyqh000dtm4du5e1vh8h","blueprintId":"cmv05qyqh0008tm4dymmg8zuf","judul":"Pitfall","konten":"⚠ Ganti tenant → reset `sync_produk_at`, wajib full pull\n⚠ `updated_at` harus ada DB trigger auto-update\n⚠ Jika server belum deploy `?since=`, client fallback full pull","media":"[]","urut":4,"createdAt":"2026-10-08T23:18:38.681Z","updatedAt":"2026-10-08T23:18:38.681Z"}],"children":[],"parent":{"slug":"sync-engine","judul":"Sync Engine"}}