XPrivate · admin-MVP-1 · Pricing — Base + Override cascade CANONICAL ★ — pricing source-of-truth aligned 2026-05-31
model = Base + Override cascade (SubjectLevel ?? Subject ?? Base) · base_price + subject_price_override (sparse) + subject_offer (applicability, default OFF) · price + cancel-policy LATE-BIND · Stack: React 19 + TanStack Start (SPA) · shadcn amber b1MJ9vRwY6
🧪 RESHAPED MODEL — Base + Override cascade. Tab "Base" = harga dasar (semua subject pakai ini). Tab "Subject" = toggle ditawarkan + override (klik sel untuk override). Klik sel di Base = edit harga dasar.

Pricing — Base + Override (model final)

Cascade: SubjectLevel override ?? Subject override ?? Base. Most subject inherit base (0 kerja). Special subject override. Applicability (is_offered) terpisah, default OFF.

2 surface: (1) Base Price = 1 matrix kecil Tingkat × Segmentasi, subject-agnostic, di-set sekali. (2) Subject Pricing = per-subject: set applicability (Tingkat mana di-offer, default OFF) + override harga yang beda dari base (sparse). Subject yang gak di-override = inherit base otomatis.
① Base Price (default semua subject)
② Subject Pricing (applicability + override)
Harga/Base Price

Base Price Matrix subject-agnostic

Harga dasar per Tingkat × Segmentasi. Semua subject pakai ini secara default. Klik sel untuk edit.

Base = 1 sumber kebenaran. 15 Tingkat × 3 Segmentasi = 45 cell (student). Tutor + Golongan. Ubah base → kena semua subject yang inherit. Effective-dated (late-bind di billing).
Harga/Subject/Tryout
Contoh subject:
Ditawarkan ke default: semua OFF (opt-in)
Preset cepat:

Tryout — harga

inherit base (abu, redup) override (kuning, tebal) tidak ditawarkan