1) Tujuan
Membawa FSC ke level rilis “siap jual” dengan peningkatan besar namun tanpa melanggar kontrak arsitektur:
- Advanced Shortcode Generator + Live Preview (UI builder lengkap, copy-to-clipboard, presets).
- Multi-Airport & Multi-Board Support (tampil beberapa board sekaligus; preset per board).
- Provider Pack v1 Stabil (AviationStack, AeroDataBox, FlightLabs, FlightAware, OpenSky—mapping & normalisasi seragam).
- Background Prefetch & Cache v2 (cron pre-warm + rate limit/backoff supaya hemat kuota & cepat).
- Health & Logs 2.0 (diagnostik lebih detail, last error trace, response-time & hit counter).
- License & Auto-Update (Envato) dasar (cek purchase code + notifikasi update; tetap opsional).
- UX Frontend++ (status filter lanjutan, airline filter, highlight perubahan, kolom yang bisa di-hide).
- Keamanan & Kinerja (nonce/REST caps yang rapi, sanitasi tambah ketat, minimalisasi query/transient).
2) Konteks Versi
- From: 1.7.35 (frozen contract)
- To: 1.8.0 (feature release)
- Semver: minor bump → fitur besar non-breaking terhadap kontrak.
3) Perubahan (Scope)
Catatan: Nama tab/slug, namespace REST, shortcode, dan hooks tidak berubah.
3.1 Admin (FSC_Admin)
-
Shortcodes & Generator (baru, full UI)
-
Komponen builder: Airport, Direction, Status filter, Per Page, Auto Refresh, Export toggle, Column visibility.
-
Live Preview pakai
GET /fsc/v1/flights(iframe/seksi preview di halaman yang sama). -
Presets (save/load/delete) tersimpan di option
fsc_presets(array kecil). -
Tombol Copy Shortcode →
[fsc_board ...].
-
-
Design: tambah saklar Hide columns (gate/terminal/baggage/remarks).
-
Tools: tombol Pre-Warm Cache (trigger cron run sekali).
-
Health: tampilkan: response time provider, status HTTP, rate-limit header (jika ada), dan total cache hits/miss (counter sederhana di option).
3.2 REST (FSC_REST)
-
GET /flights:-
tambah argumen opsional
airlines(CSV IATA/ICAO nama),hide_cols(CSV),preset(string id). -
masih backward compatible; default perilaku sama.
-
-
Prefetch endpoint internal (opsional): tidak publik; dipanggil via WP-Cron (internal hook
fsc_cron_prefetch).
3.3 Frontend (FSC_Frontend)
-
Shortcode
[fsc_board]dukung atribut baru:-
airlines="GA,Citilink"(contoh),hide_cols="gate,baggage",preset="default_cgk".
-
-
Highlight perubahan (membedakan baris berubah pada auto-refresh).
-
Column visibility runtime dari atribut/option.
3.4 Provider Pack v1
-
Mapper konsisten ke schema normalisasi (
flight_no, airline, origin, destination, sched_time, est_time, gate, terminal, baggage, status, remarks). -
Test Connection per provider: pesan jelas (quota, auth invalid, endpoint down).
-
Rate limit/backoff dasar di layer fetch (retry ringan, min-interval).
3.5 Cache v2 (Prefetch)
-
WP-Cron job setiap X menit (konfigurabel di Settings → Connector/Tools) untuk pre-warm airport yang sering dipakai (berdasarkan preset).
-
TTL tetap dari
cache_ttl; pre-warm menjaga cache siap saji.
3.6 License & Auto-Update (Envato)
-
Tab License menambahkan cek purchase code (personal token Envato) + simpan status.
-
Notifikasi update (admin notice) tanpa auto-download (opsional; tidak mengganggu bila tidak diisi).
4) Invariants (Tetap)
-
Bootstrap Gaya A, constants top-level, init tunggal di
plugins_loaded. -
Struktur tab admin tetap.
-
REST namespace
fsc/v1& endpoint wajib tetap ada. -
Shortcode
[fsc_board]tetap. -
Hooks provider
fsc/provider_fetch&fsc/provider_testtetap.
5) Acceptance Criteria
-
Generator UI:
-
Bisa membuat shortcode & preview hasil yang sesuai (airport/direction/per_page/auto_refresh/filters).
-
Preset bisa save/load/delete; mempengaruhi preview & shortcode.
-
-
Multi-board: 2+ board di satu halaman jalan normal (independen, auto-refresh masing2).
-
Provider:
-
Masing-masing provider lulus Test Connection (dengan kredensial valid).
-
Data tampil normal, status termapping benar (scheduled/active/delayed/cancelled/landed).
-
-
Cache v2:
-
Cron prefetch jalan, cache hit meningkat (counter health).
-
Tidak ada lonjakan request saat auto-refresh massal.
-
-
Health & Logs 2.0:
-
Menampilkan response time & status provider terakhir, log error singkat, counter hit/miss.
-
-
License:
-
Input token + purchase code menghasilkan status “Active” bila valid; bila kosong, plugin tetap berfungsi (soft-gating).
-
-
Keamanan:
-
Nonce & capability checks lulus; tidak ada notice PHP/WP (WP_DEBUG=ON).
-
6) Cara Test (Checklist)
-
Upgrade file → aktivasi plugin (tidak ada fatal).
-
Admin → Shortcodes: build konfigurasi, Preview sesuai, Copy Shortcode menghasilkan output yang valid.
-
Posting halaman dengan 2 board (CGK arrivals + DPS departures) → tampil, auto-refresh bekerja.
-
Ganti provider ke masing-masing adaptor → Test Connection sukses (atau pesan error jelas).
-
Tools → Pre-Warm Cache → Health menunjukkan hit rate naik.
-
Design → hide “Gate/Baggage” → kolom hilang di frontend.
-
License → masukkan token + purchase code dummy (jalur gagal) → tampil status error yang ramah pengguna; opsi kosong → tidak mengganggu.
7) Risiko & Rollback
-
Risiko: cron memicu beban berlebih jika interval terlalu rapat/preset banyak.
-
Mitigasi: default interval konservatif; limiter; opsi disable cron prefetch.
-
Rollback: copy–replace kembali file Admin/REST/Frontend versi 1.7.35 + hapus perubahan baru (generator UI & cron) → kontrak tetap aman.
8) Dampak Data / Migrasi
-
Tidak ada perubahan DB struktural.
-
Menambahkan option baru non-kritis:
fsc_presets,fsc_cache_stats,fsc_cron_interval,fsc_license_envato. -
Jika dihapus, plugin tetap jalan (fallback default).
9) File yang Berubah / Baru
-
Diubah:
-
includes/class-fsc-admin.php(Generator UI + Tools + Health counters) -
includes/class-fsc-rest.php(argumen baru, prefetch helper) -
includes/class-fsc-frontend.php(atribut baru, highlight perubahan, hide columns)
-
-
Baru (opsional, tapi direkomendasikan):
-
includes/class-fsc-cron.php(scheduler prefetch) -
includes/providers/map/*(mapper util/provider helpers) -
assets/admin.js&assets/admin.css(UI generator) — jika tidak ingin inline
-
-
Tetap: file utama,
class-fsc-contract.php(guard), struktur tabs (nama/slug).
10) Estimasi Perubahan Kode
-
Admin: ~300–450 LOC (UI builder + presets + health).
-
REST: ~120–180 LOC (args & prefetch).
-
Frontend: ~150–220 LOC (atribut baru + highlight + hide columns).
-
Cron/helper: ~100–160 LOC.
11) Rencana Rilis
-
Tag:
1.8.0 -
Staging test: provider nyata (min. satu) + demo data ON.
-
Smoke test 10–15 menit sesuai checklist.
-
Dokumentasi: update README/Docs (Generator, Multi-board, Prefetch, License).
## [1.8.0] - 2025-08-27 ### Added - Advanced Shortcode Generator with Live Preview, presets (save/load/delete), and copy-to-clipboard. - Multi-Airport / Multi-Board support (beberapa board di satu halaman). - Provider Pack v1: mapping konsisten & test connection yang informatif. - Cache v2: background prefetch via WP-Cron + rate limit/backoff dasar. - Health & Logs 2.0: response time, status HTTP, hit/miss counter. - License (Envato) soft-gating: purchase code check + update notice (opsional). - Frontend UX: status & airline filter (atribut), highlight perubahan, column visibility. ### Changed - REST /flights menerima parameter baru (airlines, hide_cols, preset) — backward compatible. - Admin Tools: tombol Pre-Warm Cache. ### Fixed - Sanitasi & capability checks diperketat di admin/REST. - Beberapa edge case normalisasi status antar provider. ### Security - Pengetatan nonce, permission_callback, dan sanitasi semua input admin/REST. [1.8.0]: https://airport.id/plugins/flight-schedules-connector/changelog#1.8.0