changes / be

MPC Backend — Version Changelog

Versi aktif berikutnya: v1.13 (naik dari v1.12). Chat sama → jangan bump, update bullet saja.

Independen dari app lain. Indeks: mpc-dev/docs/versions/README.md. API: mpc-dev/docs/api/be.md.


v1.12 — 2026-08-20

  • GET /inventory: response product menyertakan category (= product_type) supaya member apps bisa split Court Café (FnB) vs Pro Shop tanpa bergantung field yang hilang; ProShop tidak lagi nyasar ke section F&B.
  • Register / update profile: nomor HP wajib unik (normalisasi digit, 08…+62…); error phone already registered.

v1.11 — 2026-08-20

  • Product: expose gallery (JSON URL array, default []) alongside existing image_url — migration workspace 027. Admin uploads multi photos to Firebase; member apps still use image_url as primary.
  • api_contract.md: document gallery on product list responses.

v1.10 — 2026-08-20

  • OTP registrasi / reset password nyata: POST /auth/otp/send generate kode 4 digit, simpan hash di email_otps (TTL 10 menit, cooldown 60 detik, max 5 percobaan), kirim via Resend. Mock 1234 dihapus.
  • POST /auth/otp/verify dan POST /auth/password/reset memverifikasi hash + expiry, lalu menghapus OTP.
  • Email tidak terdaftar: otp/send tetap 200 tanpa kirim (anti-enumerasi). Resend mati / gagal: 500. Cooldown: 429.
  • Migration workspace 026-email-otps. EMAIL_FROM harus domain yang sudah verified di Resend.

v1.9 — 2026-08-15

  • Promo: image_url + display_order (migration 025); GET /content/home active_promos[] diurutkan display_order ASC, created_at ASC — dipakai carousel gambar Home Android/iOS.
  • Cron CleanupPastBookings (ticker 5 menit) diperluas: sekarang auto-complete booking yang sudah lewat waktu selesai baik karena tidak pernah check-in (no-show) maupun check-in tapi lupa check-out (dulu hanya cover no-show).
  • Baru: static file serving publik GET /static/* (Gin router.Static, dari folder lokal ./static, tanpa auth) — dipakai untuk hotlink gambar promo (/static/promos/*.png) karena folder public admin site ada di belakang auth login, tidak cocok untuk aset yang perlu diakses langsung oleh app member.
  • Migration 025 dijalankan manual di DB produksi (mpcdb.promos.image_url/display_order, sebelumnya baru ada di kode/migration file, AUTO_MIGRATE=false sehingga tidak otomatis).
  • Seed 5 promo baru dengan gambar carousel (generated, style konsisten primary teal on white): 3 Court (Morning Court Privilege, Weekend Doubles Special, Off-Peak Court Hours) + 2 F&B (Court Cafe Refresh, Match Day Fuel Combo), display_order 0-4, gambar di /opt/mpc-be/static/promos/.
  • Replace 5 file gambar promo di /opt/mpc-be/static/promos/ dengan foto real photography rasio 16:9 tanpa teks/watermark (round pertama pakai teks judul dibakar ke gambar di rasio ~1.5:1 — sekarang judul/badge digambar native oleh app). Tidak ada perubahan kode; image_url di DB tidak berubah (nama file sama, konten di-overwrite via rsync).

v1.8 — 2026-08-15

  • Push notifications foundation: tabel device_tokens, enrich notifications (category, data); migration workspace 023.
  • FCM HTTP v1 + Resend email delivery di atas inbox Notify (async; skip jika env belum diisi).
  • API: POST/DELETE /device-tokens; GET /notifications/me (+ auth pada list/mark-read); admin broadcast / push / notify-customer.
  • Event hooks: payment, booking create/cancel/reschedule, resto reservation, reminder H-1 jam (ticker), POS check-in via be-pos bridge.
  • Env: lihat .env.example + mpc-dev/docs/push-notifications-setup.md. iOS client push masih ditunda (mpc-dev/docs/tasks.md).
  • FCM Android: set android.notification.channel_id=mpc_main agar tray pakai channel app.

v1.7 — 2026-08-13

  • Resto reservations (member): package internal/spaces — spaces + availability + reservations; court VIP bundling; tip feature; etc. (lihat riwayat commit / spec 028–029).

v1.6 — 2026-08-11

  • Matchplay full; FnB pickup; court showcase.

v1.5 — 2026-08-10

  • FnB / ProShop / Rent catalog & related APIs.