# PANDUAN PENGGUNAAN SISTEM (USER MANUAL & OPERATIONAL GUIDE)
## SPARKO ScoreMaster — v2.1.0 (Enterprise Tournament Edition)
**Sistem Informasi, Manajemen Kompetisi & Penilaian Terpadu Senam SPARKO**

---

## DAFTAR ISI
1. [Arsitektur & Alur Kerja Keseluruhan (Master Workflow)](#1-arsitektur--alur-kerja-keseluruhan-master-workflow)
2. [Panduan Berdasarkan Kategori Pengguna (Role-Based Manual)](#2-panduan-berdasarkan-kategori-pengguna-role-based-manual)
   - [2.1 Super Admin / Stage Director](#21-super-admin--stage-director-meja-utama)
   - [2.2 Operator Staging & Lot Drawing](#22-operator-staging--lot-drawing)
   - [2.3 Dewan Juri (Juri 1, 2, 3) — Tablet PWA](#23-dewan-juri-juri-1-juri-2-juri-3--tablet-touch-pwa)
   - [2.4 Operator Live TV Broadcast Display](#24-operator-live-tv-broadcast-display-layar-panggung)
   - [2.5 Petugas Meja Cetak Struk Nilai (Thermal 80mm)](#25-petugas-meja-cetak-struk-nilai-thermal-80mm)
   - [2.6 Ketua Dewan Juri & Komite Kejuaraan](#26-ketua-dewan-juri--komite-kejuaraan)
3. [Panduan Langkah demi Langkah Penilaian Lapangan (Step-by-Step Scoring)](#3-panduan-langkah-demi-langkah-penilaian-lapangan)
4. [Prosedur Khusus & Kontinjensi Darurat](#4-prosedur-khusus--kontinjensi-darurat)
   - [Substitusi Pemain Cedera (Quick Swap)](#substitusi-pemain-cedera-quick-swap)
   - [Pemberian Penalti Pelanggaran Arena](#pemberian-penalti-pelanggaran-arena)
   - [Failover Kerusakan Tablet Juri (<15 Detik)](#failover-kerusakan-tablet-juri-15-detik)
   - [Aturan Pemecah Nilai Seri (Tie-Breaker)](#aturan-pemecah-nilai-seri-tie-breaker)
5. [Daftar PIN & Port Akses Resmi](#5-daftar-pin--port-akses-resmi)

---

## 1. Arsitektur & Alur Kerja Keseluruhan (Master Workflow)

Ekosistem SPARKO ScoreMaster mengintegrasikan 5 antarmuka utama yang tersinkronisasi via WebSocket real-time (<300 ms latensi):

```
┌─────────────────────────────────────────────────────────────────────────────┐
│                       FASE 1: PRA-PERTANDINGAN                              │
│ 1. Setup Turnamen (Nama, Lokasi, Pejabat) di Admin Console                  │
│ 2. Registrasi Kontingen (Kategori PA/PI, Divisi TNI/POLRI/Umum/Pelajar)     │
│ 3. Pengundian Nomor Lot (Fisher-Yates Shuffle Digital / Manual Entry)       │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                    FASE 2: EKSEKUSI PANGGUNG (HARI-H)                       │
│ 1. Pemanggilan Tim Aktif On-Stage [Admin Stage Director]                    │
│ 2. Verifikasi Barisan & Personel [Staging Deck]                             │
│ 3. Pembukaan Sesi Penilaian [Open Scoring]                                  │
│ 4. Penilaian Cepat Multi-Juri via Tablet 10" (Default = TRUE / Hijau)       │
│    - Juri 1: Persiapan (15 pt) & Repetisi 10 Gerakan (20 pt) = Max 35.00    │
│    - Juri 2: Musik (20 pt), Kompak (10 pt), Semangat (6 pt) = Max 36.00     │
│    - Juri 3: Standar Teknis (20 pt), Yel-Yel 9 Rest (9 pt)  = Max 29.00     │
│ 5. Input Penalti Lapangan jika terjadi insiden (PEN-01 s/d PEN-04)           │
│ 6. Gores Tanda Tangan Digital & Penguncian Skor oleh Ketiga Juri            │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                   FASE 3: TAYANGAN PANGGUNG & REKAP                         │
│ 1. Kunci Sesi Resmi [Lock Scoring]                                          │
│ 2. Tayangkan Reveal Dramatis ke TV Display [Reveal to TV]                   │
│    - Roll Counter Animasi Breakdown J1, J2, J3, Penalti                     │
│    - Reveal Total Nilai Akhir Emas + Peringkat Sementara                    │
│ 3. Cetak Struk Nilai Fisik 80mm ESC/POS untuk Manajer Tim                   │
│ 4. Rotasi Klasemen Leaderboard Otomatis saat Jeda Tim                       │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
                                       ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                    FASE 4: PENETAPAN AKHIR & ARSIP                          │
│ 1. Penetapan Juara I, II, III (Sistem Tie-Breaker Hierarkis Otomatis)       │
│ 2. Cetak Berita Acara Resmi Format A4 Bersegel Digital                      │
│ 3. Unduh Master File Database Turnamen (Excel .xlsx 5-Tab)                  │
└─────────────────────────────────────────────────────────────────────────────┘
```

---

## 2. Panduan Berdasarkan Kategori Pengguna (Role-Based Manual)

### 2.1 Super Admin / Stage Director (Meja Utama)
- **Akses**: `http://localhost:3000/admin`
- **PIN Otorisasi**: `9999`
- **Tanggung Jawab**:
  1. Mengatur master turnamen (Nama kejuaraan, dewan juri, ketua panitia).
  2. Mengendalikan urutan panggung dan memanggil tim (*Call to Stage*).
  3. Membuka dan mengunci gerbang penilaian juri (*Open/Lock Scoring*).
  4. Memicu animasi *Reveal Score to TV*.
  5. Menginput penalti resmi arena atas persetujuan Ketua Dewan Juri.
  6. Mengelola penggantian tablet darurat (*Force Re-pair Tablet*).

### 2.2 Operator Staging & Lot Drawing
- **Akses**: `http://localhost:3000/admin` (Tab: *Peserta & Lot Drawing*)
- **Tanggung Jawab**:
  1. Memverifikasi daftar 5 personil inti (P1–P5) dan 2 personil cadangan (C1, C2) setiap tim.
  2. Menjalankan *Technical Meeting Lot Drawing* dengan menekan tombol **🎲 Kocok Lot Putra** atau **🎲 Kocok Lot Putri** (algoritma Fisher-Yates tervalidasi).
  3. Melakukan penyesuaian nomor lot jika terjadi situasi *force majeure*.

### 2.3 Dewan Juri (Juri 1, Juri 2, Juri 3) — Tablet Touch PWA
- **Akses**: `http://localhost:3000/juri`
- **Tanggung Jawab & Plafon Penilaian**:
  - **JURI 1 (PIN: `1111`)**:
    - **Tahap Persiapan (Maks 15.00 pt)**: Kehadiran 5 personil ($5 \times 2.0 = 10\text{ pt}$), Baju ($5 \times 0.2 = 1\text{ pt}$), Celana ($5 \times 0.2 = 1\text{ pt}$), Sepatu ($5 \times 0.2 = 1\text{ pt}$), Kostum Kompak ($1\text{ pt}$), Penghormatan Awal ($0.5\text{ pt}$), Penghormatan Akhir ($0.5\text{ pt}$).
    - **Kelengkapan Repetisi 10 Gerakan Baku (Maks 20.00 pt)**: 10 Gerakan $\times$ 5 personil $\times 0.4\text{ pt}$ (Maks $2.0\text{ pt}$ per gerakan).
    - **Total Plafon Juri 1**: $35.00\text{ pt}$.
  - **JURI 2 (PIN: `2222`)**:
    - **Keserasian Gerakan dengan Musik (Maks 20.00 pt)**: 10 Gerakan $\times$ 5 personil $\times 0.4\text{ pt}$.
    - **Kekompakan Gerakan (Maks 10.00 pt)**: 10 Gerakan $\times$ 5 personil $\times 0.2\text{ pt}$.
    - **Semangat Tim (Maks 6.00 pt)**: Evaluasi Kurang ($0\text{ pt}$), Sedang ($3\text{ pt}$), Tinggi ($6\text{ pt}$).
    - **Total Plafon Juri 2**: $36.00\text{ pt}$.
  - **JURI 3 (PIN: `3333`)**:
    - **Kesesuaian Standar Teknis (Maks 20.00 pt)**: 10 Gerakan $\times$ 5 personil $\times 0.4\text{ pt}$.
    - **Yel-Yel Saat Istirahat/Rest (Maks 9.00 pt)**: 9 Jeda Rest $\times$ 5 personil $\times 0.2\text{ pt}$.
    - **Total Plafon Juri 3**: $29.00\text{ pt}$.

### 2.4 Operator Live TV Broadcast Display (Layar Panggung)
- **Akses**: `http://localhost:3000/display`
- **Tanggung Jawab**:
  1. Menghubungkan mini-PC / laptop display ke monitor LED Panggung (resolusi Full HD 1080p atau 4K).
  2. Mengaktifkan mode layar penuh dengan menekan tombol **⛶ Fullscreen 4K** (atau F11).
  3. Memastikan audio speaker panggung aktif (**🔊 Audio ON**) untuk memutar efek *chime* penguncian dan *sound synthesizer reveal*.
  4. Sistem otomatis berpindah tampilan antara mode Tim Aktif On-Stage dan mode Klasemen Leaderboard dual-kategori saat jeda acara.

### 2.5 Petugas Meja Cetak Struk Nilai (Thermal 80mm)
- **Akses**: `http://localhost:3000/thermal`
- **Tanggung Jawab**:
  1. Menghubungkan printer POS 80mm (USB, Bluetooth, atau LAN IP).
  2. Saat sesi nilai tim terkunci, memilih tim pada dropdown lalu menekan tombol **🖨️ Cetak Struk 80mm**.
  3. Menyerahkan struk fisik resmi kepada Manajer/Official Kontingen yang bersangkutan sebagai bukti transparansi nilai.

### 2.6 Ketua Dewan Juri & Komite Kejuaraan
- **Akses**: `http://localhost:3000/berita-acara` & `/api/export/excel`
- **Tanggung Jawab**:
  1. Mengotorisasi setiap pemotongan penalti arena (PEN-01 s/d PEN-04).
  2. Memeriksa hasil sidang pleno penetapan juara.
  3. Menandatangani lembar Berita Acara A4 penetapan Juara I, II, III per kategori.
  4. Mengunduh master database turnamen Excel multi-tab untuk arsip PB SPARKO.

---

## 3. Panduan Langkah demi Langkah Penilaian Lapangan

### Langkah 1: Persiapan Tablet Juri
1. Nyalakan tablet 10" juri dan buka browser Chrome ke URL: `http://localhost:3000/juri`.
2. Pilih kartu peran juri:
   - Juri 1 ➔ Masukkan PIN `1111`
   - Juri 2 ➔ Masukkan PIN `2222`
   - Juri 3 ➔ Masukkan PIN `3333`
3. Tekan **MASUK PENJURIAN TABLET**.
4. Tablet akan menampilkan identitas juri dan menunggu tim dipanggil ke panggung oleh Stage Director.

### Langkah 2: Pemanggilan Tim On-Stage
1. Di layar Admin (`/admin`), buka menu **Stage Control Deck**.
2. Klik tombol **Panggil Tim Lain...** dan pilih nama tim yang dipanggil ke arena.
3. Tekan **Panggil Ke Panggung**.
4. Seketika nomor lot, nama tim, kontingen, dan daftar anggota tim (P1–P5) muncul di seluruh tablet juri dan layar TV panggung.

### Langkah 3: Pembukaan Sesi Penilaian
1. Saat tim sudah siap di atas matras formasi, Admin menekan tombol hijau **▶ Buka Penilaian Juri**.
2. Status di seluruh perangkat berubah menjadi **SCORING_OPEN**.

### Langkah 4: Pengisian Skor di Tablet Juri (Prinsip Rapid-Tap)
1. **Penting**: Seluruh butir gerakan, kelengkapan, dan yel-yel sudah bernilai **DEFAULT = TRUE (Hijau / Nilai Penuh)**.
2. Juri **TIDAK PERLU** mengetuk semua tombol jika gerakan benar.
3. **HANYA JIKA TERJADI KESALAHAN/PENGURANGAN**:
   - Ketuk tombol personil yang melakukan kesalahan (misal: P3 salah repetisi di M2 Shoulder Tap).
   - Tombol akan berubah warna menjadi **MERAH (0 pt)** dan nilai berjalan (*running score*) otomatis terpotong secara akurat.
4. Jika ingin mengembalikan nilai ke penuh, ketuk kembali tombol personil tersebut atau gunakan tombol *Reset ke Penuh (100%)*.

### Langkah 5: Goresan Tanda Tangan Digital & Pengiriman Nilai
1. Setelah gerakan ke-10 dan penghormatan akhir selesai, juri memeriksa total subtotal di pojok kanan bawah.
2. Goreskan tanda tangan digital langsung pada kanvas sentuh **TANDA TANGAN DIGITAL JURI**.
3. Tekan tombol **KIRIM PENILAIAN RESMI ✓**.
4. Muncul jendela konfirmasi rincian nilai ➔ Tekan **KIRIM & KUNCI SEKARANG**.
5. Nilai langsung terkunci, indikator di TV display dan Admin Console seketika berubah menjadi **HIJAU CENTANG (TERKUNCI ✓)** dengan efek suara *chime*.

### Langkah 6: Penguncian Sesi & Tayangan Reveal ke TV
1. Setelah ketiga juri menyelesaikan pengiriman nilai:
2. Admin menekan tombol **🔒 Kunci Sesi Penilaian**.
3. Admin menekan tombol **📺 Tayangkan Reveal Ke TV**.
4. Layar TV Panggung 4K memutar animasi dramatis hitung mundur / roll counter skor Juri 1, 2, 3, potongan penalti, hingga muncul **NILAI AKHIR EMAS** beserta peringkat sementara tim.

### Langkah 7: Cetak Struk Nilai Fisik
1. Admin menekan tombol **🧾 Cetak Struk 80mm** pada kartu tim.
2. Jendela cetak thermal printer 80mm terbuka otomatis. Tekan *Print* untuk mencetak struk fisik.
3. Admin menekan **Reset Panggung** untuk memanggil tim giliran berikutnya.

---

## 4. Prosedur Khusus & Kontinjensi Darurat

### Substitusi Pemain Cedera (Quick Swap)
Jika ada atlet inti mengalami cedera saat pemanasan atau sebelum tampil:
1. Di layar Admin (`/admin`), klik tombol **🔄 Substitusi Darurat**.
2. Pilih nomor posisi atlet inti yang cedera (P1 s/d P5).
3. Pilih nama cadangan pengganti (C1 atau C2).
4. Masukkan alasan resmi (misal: *"Cedera otot hamstring saat pemanasan"*).
5. Klik **Eksekusi Pergantian**.
6. Sistem seketika memperbarui nama anggota pada kolom juri, struk thermal, dan database dengan label `(SUBSTITUTED)` serta mencatat log audit resmi.

### Pemberian Penalti Pelanggaran Arena
Jika terjadi pelanggaran disiplin seragam atau arena:
1. Di layar Admin (`/admin`), klik tombol **⚠️ Input Penalti**.
2. Pilih kode pelanggaran:
   - `PEN-01`: Atribut/Perlengkapan Terjatuh ($-0.50\text{ pt}$ / insiden).
   - `PEN-02`: Keluar Batas Arena/Matras ($-0.50\text{ pt}$ / personil).
   - `PEN-03`: Terlambat Masuk Arena ($-1.00\text{ pt}$).
   - `PEN-04`: Pelanggaran Etika/Sportivitas ($-2.00\text{ pt}$ s/d Diskualifikasi).
3. Tuliskan deskripsi insiden (misal: *"Topi P3 lepas saat Russian Twist"*).
4. Klik **Potong Nilai Tim**. Nilai akhir langsung terpotong secara otomatis di server dan TV display.

### Failover Kerusakan Tablet Juri (<15 Detik)
Jika tablet juri mengalami kendala fisik (baterai habis, layar pecah, atau hang):
1. Petugas IT Lapangan mengambil tablet cadangan unit (*Spare Tablet*).
2. Di layar Admin (`/admin`), buka tab **Tablet & Failover**.
3. Pada kartu juri yang bermasalah, klik tombol **⚠️ Force Re-Pair Tablet (<15s)**.
4. Sesi lama diputus seketika dan token baru diterbitkan.
5. Pada tablet cadangan, buka `http://localhost:3000/juri` dan masukkan PIN juri yang bersangkutan.
6. Seluruh isian nilai tim yang sedang tampil seketika pulih tanpa kehilangan data dalam waktu kurang dari 15 detik.

### Aturan Pemecah Nilai Seri (Tie-Breaker)
Jika dua atau lebih tim memperoleh Nilai Akhir yang sama persis (misal: 96.50 vs 96.50), sistem secara otomatis menyortir peringkat dengan rumus prioritas:
1. **Prioritas 1**: Skor Gabungan Standar Teknik & Musik = $(\text{Juri 3 Standar}) + (\text{Juri 2 Musik})$.
2. **Prioritas 2**: Skor Kelengkapan Repetisi 10 Gerakan $(\text{Juri 1})$.
3. **Prioritas 3**: Skor Kekompakan & Semangat = $(\text{Juri 2 Kompak}) + (\text{Juri 2 Semangat})$.
4. **Prioritas 4**: Akumulasi Poin Penalti Terendah (Tim dengan penalti paling kecil menempati posisi lebih tinggi).
5. **Prioritas 5**: Sidang Pleno Ketua Dewan Juri (*Manual Override* di sistem).

---

---

## 5. Daftar PIN & Port Akses Resmi

| Modul | URL Akses | Hak Akses / Kredensial |
|---|---|---|
| **Portal Navigasi Hub** | `http://localhost:3000/` | Publik / Seluruh Panitia |
| **Portal Login Terpadu** | `http://localhost:3000/login` | Pemilihan Role & PIN Selector (Admin & Juri) |
| **Stage Director Console & Ruang Tunggu** | `http://localhost:3000/admin` | **PIN Admin: `9999`** |
| **Meja Juri 1 (Persiapan & Repetisi)** | `http://localhost:3000/juri` | **PIN Juri 1: `1111`** |
| **Meja Juri 2 (Musik, Kompak, Semangat)** | `http://localhost:3000/juri` | **PIN Juri 2: `2222`** |
| **Meja Juri 3 (Standar Teknis & Yel-Yel)** | `http://localhost:3000/juri` | **PIN Juri 3: `3333`** |
| **Live TV Broadcast Display (4K)** | `http://localhost:3000/display` | Operator Layar Panggung |
| **Struk Thermal 80mm** | `http://localhost:3000/thermal` | Operator Printer POS |
| **Berita Acara Penetapan Juara (A4)** | `http://localhost:3000/berita-acara` | Ketua Komite & Dewan Juri |
| **Download Master Excel (.xlsx)** | `http://localhost:3000/api/export/excel` | Sekretariat PB SPARKO |

---

## 6. Aturan Netralitas Dewan Juri (Proteksi Konflik Kepentingan Provinsi)

Sistem menerapkan **Hard-Rule Netralitas Integritas Turnamen**:
> **"Juri yang berasal dari Provinsi A MUTLAK DILARANG menilai atlet/kontingen yang berasal dari Provinsi A."**

### Mekanisme Kerja Sistem:
1. **Pencocokan Otomatis**: Setiap kali tim dipanggil ke panggung (`ON_STAGE`), sistem mencocokkan asal provinsi 3 dewan juri aktif (`JURI_1`, `JURI_2`, `JURI_3`) terhadap kontingen tim yang bertanding.
2. **Peringatan & Blokir di Sisi Juri**:
   - Jika Juri 1 berasal dari Jawa Barat dan kontingen SPARKO Jawa Barat tampil, tablet Juri 1 secara otomatis menampilkan layar modal merah: **⛔ AKSES PENILAIAN DIBLOKIR**.
   - Tombol kirim nilai dikunci dan juri tidak dapat menginput maupun mengirimkan penilaian.
3. **Peringatan & 1-Klik Penukaran di Sisi Super Admin**:
   - Di Admin Stage Deck (`/admin`), muncul banner peringatan merah: **⚠️ PELANGGARAN NETRALITAS TERDETEKSI**.
   - Admin cukup menekan tombol **🔄 TUKAR KE JURI CADANGAN NETRAL**.
   - Sistem menampilkan daftar juri cadangan resmi yang berasal dari luar provinsi yang berkonflik.
   - Sekali klik, juri cadangan netral langsung ditugaskan menggantikan meja tersebut tanpa mengganggu jalannya kompetisi.
4. **Proteksi Backend Mutlak**:
   - Endpoint `submitScore` dilengkapi pengaman di level basis data. Upaya submit dari juri se-provinsi akan ditolak dengan galat HTTP 400 (*Pelanggaran Integritas Turnamen*).

---

## 7. Modul Staging Transit & Ruang Tunggu Atlet (Kendali Admin Master)

Akses langsung melalui Konsol Admin: Tab **"🚪 Ruang Tunggu & Transit"** (`http://localhost:3000/admin?tab=transit`).

Fungsi ruang tunggu pra-panggung dikendalikan penuh secara terpadu oleh **Admin Master** untuk memastikan kelancaran alur kompetisi tanpa perlu akun terpisah.

### Alur Kerja di Ruang Tunggu:
1. **Pilih Kontingen di Antrian**: Klik salah satu tim pada daftar antrian ruang tunggu di sebelah kiri.
2. **Pemeriksaan 5 Atlet Inti & Cadangan**:
   - Sistem menampilkan nama lengkap dan ID Card seluruh atlet (`position_number`, `full_name`, `id_card_number`) tanpa kesalahan data.
3. **Ceklist Verifikasi Pra-Panggung**:
   - [✓] **1. Verifikasi ID Card & Identitas Fisik**: Atlet inti mengenakan tanda pengenal resmi turnamen SPARKO.
   - [✓] **2. Seragam Standar SPARKO & Kerapian**: Jersey resmi, celana standar turnamen, dan sepatu bertali rapi.
   - [✓] **3. Bebas Aksesoris Berbahaya**: Tidak mengenakan perhiasan, cincin, kalung, jam tangan, atau benda tajam.
   - [✓] **4. Kesiapan Fisik & Pemanasan**: Seluruh atlet telah selesai pemanasan dan bugar untuk bertanding.
4. **Otorisasi & Pemanggilan Panggung**:
   - **Tandai Siap di Ruang Tunggu** (`READY_STAGING`): Mengesahkan status kesiapan atlet di area transit.
   - **Panggil & Naikkan ke Panggung Utama**: Satu kali klik untuk langsung mengaktifkan tim ke panggung utama (*Stage Control Deck*) dan broadcast ke TV Display.

---

## 8. Portal Login Terpadu

Sistem menyediakan halaman otentikasi login modern dengan numpad digital layar sentuh yang ramping dan terarah:
- **URL Unified Hub**: `http://localhost:3000/login`
- **Login Khusus Admin Master**: `http://localhost:3000/login-admin` (Kredensial PIN: `9999`)
- **Login Khusus Dewan Juri**: `http://localhost:3000/login-juri` (Pilihan Meja Juri 1/2/3 atau Akun Personal Juri + PIN)

---
*SPARKO ScoreMaster v2.1.0 Enterprise Tournament Edition — Komite Kejuaraan Senam PB SPARKO Indonesia.*
