VetBooking Admin

Happy Paws Vet Clinic

Dashboard operasional sementara untuk review katalog, dokter, slot, payment iPaymu, dan readiness DB repository.

mode: mock-admin · data: sqlite

Layanan aktif

3

shared admin data source / Prisma-ready

Dokter aktif

2

policy max 3 aktif per klinik

Slot tersedia

4

TTL hold 15 menit

Payment

iPaymu

sandbox verified, waiting production verification

Layanan

Konsultasi umum

FIXED · 30 menit

Rp150.000

Vaksin anabul

FIXED · 30 menit

Rp180.000

Perawatan luka

VARIABLE · 45 menit

Estimate dokter

Dokter

drh. Anya Putri

Kucing & anjing kecil

drh. Bima Santoso

Bedah minor & luka

Admin write actions

POST /api/admin/services

Validasi FIXED/VARIABLE price, durasi 15-240 menit

preview write · DB persistence pending

POST /api/admin/doctors

Validasi WA format Indonesia 62xxxx

preview write · DB persistence pending

POST /api/admin/slots

Validasi endsAt wajib setelah startsAt

preview write · DB persistence pending

Red-team hardening tracker

TENANT_ISOLATION

partial

Data klinik bocor lintas tenant karena query tidak difilter clinicId.

Semua repository query wajib menyertakan clinicId; Postgres RLS disiapkan sebagai guardrail DB.

SLOT_RACE

partial

Dua customer mengambil slot yang sama dalam waktu bersamaan.

Hold slot memakai conditional update id + clinicId + status OPEN dalam transaksi; zero updated rows menjadi SLOT_ALREADY_TAKEN.

WEBHOOK_REPLAY

partial

Webhook iPaymu/WhatsApp dikirim ulang atau direplay sehingga state/payment double apply.

Event idempotency key wajib disimpan; duplicate event harus skip tanpa side effect.

PUBLIC_ABUSE

planned

Endpoint publik triage/booking di-spam sampai biaya AI/WA membengkak.

Rate limit per IP + clinic + phone, captcha/risk step-up untuk pola abuse, dan wallet metering.

SECRET_EXPOSURE

implemented

Credential payment/WA/AI bocor ke client, log, atau Notion.

Secret hanya env server-side; output status harus pakai [REDACTED]; jangan commit .env.

Slot Monitor

slot_anya_1

OPEN

2026-06-11T19:00:36.115Z2026-06-11T19:30:36.115Z

slot_anya_2

OPEN

2026-06-11T22:00:36.115Z2026-06-11T22:30:36.115Z

slot_bima_1

OPEN

2026-06-12T20:00:36.115Z2026-06-12T20:30:36.115Z

slot_bima_2

OPEN

2026-06-12T23:00:36.115Z2026-06-12T23:30:36.115Z