Upgrade Request Template — FSC v1.8.0

1) Tujuan

Membawa FSC ke level rilis “siap jual” dengan peningkatan besar namun tanpa melanggar kontrak arsitektur:

  1. Advanced Shortcode Generator + Live Preview (UI builder lengkap, copy-to-clipboard, presets).
  2. Multi-Airport & Multi-Board Support (tampil beberapa board sekaligus; preset per board).
  3. Provider Pack v1 Stabil (AviationStack, AeroDataBox, FlightLabs, FlightAware, OpenSky—mapping & normalisasi seragam).
  4. Background Prefetch & Cache v2 (cron pre-warm + rate limit/backoff supaya hemat kuota & cepat).
  5. Health & Logs 2.0 (diagnostik lebih detail, last error trace, response-time & hit counter).
  6. License & Auto-Update (Envato) dasar (cek purchase code + notifikasi update; tetap opsional).
  7. UX Frontend++ (status filter lanjutan, airline filter, highlight perubahan, kolom yang bisa di-hide).
  8. 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_test tetap.

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)

  1. Upgrade file → aktivasi plugin (tidak ada fatal).

  2. Admin → Shortcodes: build konfigurasi, Preview sesuai, Copy Shortcode menghasilkan output yang valid.

  3. Posting halaman dengan 2 board (CGK arrivals + DPS departures) → tampil, auto-refresh bekerja.

  4. Ganti provider ke masing-masing adaptor → Test Connection sukses (atau pesan error jelas).

  5. Tools → Pre-Warm Cache → Health menunjukkan hit rate naik.

  6. Design → hide “Gate/Baggage” → kolom hilang di frontend.

  7. 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