# 🚀 TalentScale SaaS Workflow

Dokumen ini menjelaskan alur kerja (*workflow*) lengkap dari sistem SaaS Psikotest TalentScale, mulai dari Super Admin, HRD (Company Admin), hingga Kandidat, serta otomatisasi sistem di balik layar.

---

## 1. 🚀 Super Admin Flow (KAMU)
**🎯 Tujuan:** Mengontrol seluruh operasional SaaS dan monetisasi.

### Alur Kerja:
1. **Login**
2. **Dashboard Global:**
   - Melihat total *company* (perusahaan terdaftar).
   - Memantau total *revenue* (pendapatan).
   - Melihat total kandidat keseluruhan.
3. **Manage Packages:**
   - Membuat paket baru (*Create Package*).
   - Mengubah batas kuota kandidat (*Edit Limit*).
   - Mengatur harga *overage* (kelebihan kuota).
4. **Manage Companies:**
   - Melihat daftar semua perusahaan terdaftar.
   - Melakukan *Suspend* atau *Activate* akun perusahaan.
5. **Payment Monitoring:**
   - Memeriksa histori pembayaran (*Payment History*).
   - Melakukan *Approve* manual untuk pembayaran tertentu (opsional).
6. **Analytics Global:**
   - Memantau *usage* (penggunaan) per perusahaan.
   - Melihat klien dengan tagihan tertinggi (*Top Paying Clients*).
7. **Support / Troubleshooting:**
   - Fitur *Impersonate* (masuk sebagai akun perusahaan) untuk bantuan teknis tingkat lanjut.
8. **Logout**

---

## 2. 🏢 Company Admin / HRD Flow
**🎯 Tujuan:** Menggunakan platform untuk proses rekrutmen dan psikotest kandidat.

### A. Onboarding
1. **Register**
   - Mengisi informasi perusahaan (*Company Info*).
   - Membuat akun Admin HRD.
2. **Otomatisasi Sistem:**
   - Mendapatkan paket *Trial* atau *Free* secara default.
   - Status langganan (*Subscription*) otomatis aktif.
3. Masuk ke **Dashboard HRD**.

### B. Subscription (Langganan)
- **Lihat Paket:** Melihat opsi paket yang tersedia.
- **Upgrade / Downgrade:** Mengubah paket langganan.
- **Pilih Paket & Bayar:** Melakukan transaksi pembayaran paket.
- **Status:** Langganan aktif.

### C. Management Kandidat
- **Create Kandidat:**
   - Input manual satu per satu.
   - *Bulk Import* via file CSV.
- **Assign Test:** Menugaskan soal psikotest kepada kandidat (jika modul psikotest telah aktif).
- **Pantau Status Kandidat:**
   - Belum test
   - Sedang test
   - Selesai

### D. Monitoring Penggunaan
- **Dashboard Usage:** Memantau jumlah kandidat bulan ini dan sisa kuota (limit).
- **Over-Limit Handling:** Jika kuota habis, HRD tetap bisa memasukkan kandidat (Overage), namun akan muncul *warning* mengenai biaya tambahan.

### E. Billing & Tagihan
- **Lihat Tagihan:** Memeriksa biaya langganan utama (*Subscription Fee*) dan biaya kelebihan kuota (*Overage Cost*).
- **History:** Melihat riwayat pembayaran.
- **Bayar:** Melakukan pembayaran via *Payment Gateway*.

---

## 3. 👤 Candidate Flow
**🎯 Tujuan:** Mengikuti ujian psikotest.

### Alur Kerja:
1. Menerima link atau email undangan dari HRD.
2. Membuka halaman ujian (*Test Page*).
3. Melengkapi identitas diri (jika belum didaftarkan lengkap oleh HRD).
4. **Mulai Ujian:** 
   - Sistem akan membuat `test_session`.
   - Kuota (*usage*) perusahaan otomatis bertambah (*increment*).
5. Mengerjakan soal.
6. **Submit:** Mengumpulkan jawaban.
7. Selesai.

---

## 4. ⚙️ System Flow (Automation)
Ini adalah "otak" sistem yang berjalan secara otomatis di latar belakang (*Background Jobs*).

### A. 🧠 Usage Tracking
Setiap kandidat **memulai** ujian:
- Sistem mengecek *usage* bulan ini.
- `candidates_used` bertambah (+1).
- Jika melewati batas kuota (limit), tandai sebagai **Overage**.

### B. 💰 Billing Cron (Bulanan)
Setiap **akhir bulan**, *Cron Job* akan berjalan:
1. Melakukan putaran (Loop) untuk **semua perusahaan** terdaftar:
   - Ambil data *subscription* aktif.
   - Ambil data total *usage* bulan tersebut.
   - Hitung total tagihan: `Base Price + Overage Cost`.
   - Buat entri tagihan di `payment_history`.
   - Reset *usage* untuk perhitungan bulan baru.

### C. 🚫 Access Control
Pada **setiap request** HTTP/API:
- Cek status *subscription* perusahaan.
- **IF Expired:** Blokir fitur (*Block*).
- **IF Active:** Izinkan akses (*Allow*).

### D. 🔔 Notification (Penting)
- **Email:** 
   - Notifikasi saat langganan hampir habis.
   - Notifikasi saat kuota limit hampir habis.
   - Notifikasi tagihan baru (*Invoice*) keluar.
- **In-App Notification:** Pemberitahuan langsung di dalam *dashboard*.

---

## 5. 🧩 Tambahan Fitur Spesifik (Commercial Ready)
Fitur penting untuk menjadikan platform ini siap jual secara profesional:

- **🔐 Auth System:**
   - Login & Register (JWT / Session-based).
   - Role-Based Access Control (RBAC).
- **📁 Import CSV:**
   - HRD dapat mengunggah (*upload*) kandidat secara massal.
   - Parsing otomatis dan insert ke database.
- **📈 Analytics:**
   - Laporan penggunaan (*usage*) per bulan.
   - Analisis kandidat yang selesai mengerjakan ujian.
   - *Conversion Rate*.
- **🧾 Invoice System:**
   - *Generate* invoice dalam format PDF otomatis.
   - Kirim *Invoice* via email ke perusahaan.
- **🧪 Test Module (Fitur Inti - Segera Hadir):**
   - Question Bank (Bank Soal).
   - Test Assignment (Penugasan Soal).
   - Scoring (Sistem Penilaian Otomatis).

---

## 🔥 Flow End-to-End (Gambaran Besar)

```mermaid
sequenceDiagram
    participant SuperAdmin as Super Admin
    participant HRD as Company (HRD)
    participant Candidate as Kandidat
    participant System as System (Backend)

    SuperAdmin->>System: Buat Package/Langganan
    HRD->>System: Register Akun Perusahaan
    HRD->>System: Subscribe Package
    HRD->>System: Input & Assign Kandidat
    System-->>Candidate: Kirim Link Ujian
    Candidate->>System: Mengikuti Test Psikotest
    System->>System: Track Usage (Increment Kuota)
    Note over System: Setiap Akhir Bulan
    System->>System: Hitung Tagihan (Billing + Overage)
    System->>HRD: Kirim Tagihan (Payment)
    HRD->>System: Bayar Tagihan
```
