# Report Test 1 (PAPIKOSTIK)

## Overview

Test 1 (PAPIKOSTIK) terdiri dari 20 kode kepribadian (A-Z, tanpa H/J/M/Q/U/Y). Setiap soal memiliki 2 opsi jawaban, dan tiap opsi mapping ke salah satu kode.

## Flow Data

```
applicant_answers (raw_option: 1|2)
        │
        ▼
mst_test1_codes (mst_test1_id + option → code)
        │
        ▼
Per-hitungan: count per code (A-Z) dari 20 kode
        │
        ▼
ref_test1_uraian (code + min/max → line1..line4)
        │
        ▼
test1Data.codes[code] = { code, jumlah, line1..line4 }
test1Data.radar_values  = [N,W,F,K,E,Z,R,D,C,X,O,B,S,V,T,I,P,L,A,G]
                          (K dan Z dinegasikan untuk radar chart)
```

## Database Tables

| Table | Role |
|---|---|
| `mst_test1` | Soal Test 1 |
| `mst_test1_codes` | Mapping opsi jawaban (1/2) ke kode A-Z |
| `ref_test1_uraian` | Deskripsi per kode berdasarkan range score (min/max) |
| `applicant_answers` | Jawaban user (raw_option) |

## Method: `getTest1Data($test1Session)`

1. Inisialisasi score semua 20 kode = 0
2. Load `mst_test1_codes` → group by `mst_test1_id`
3. Iterasi jawaban:
   - Dapatkan `original_id` dari `questionMapping.detail` (mst_test1.id)
   - Cocokkan raw_option (1/2) dengan `mst_test1_codes.option`
   - Increment score kode yang cocok
4. Load `ref_test1_uraian` untuk deskripsi per kode
5. Untuk tiap kode: cari range score dan ambil line1-line4
6. Build radar values dengan urutan spesifik (K dan Z dinegasikan)

## View Components (`test1.blade.php`)

### Screen View
- **Tabel CODE-SCORE-DESCRIPTION**: 20 baris kode dengan score dan deskripsi (line1 + line2 + line3 + line4)
- **Radar Chart**: ECharts 5 (CDN) — 20 indikator dengan min/max per kode
- **Tabel Grouping**: 7 group (Arah Kerja, Kepemimpinan, Aktivitas, Pergaulan, Gaya Kerja, Sifat, Ketaatan)

### Print View
- Kop dokumen + identitas kandidat
- Tabel formal CODE-SCORE-DESCRIPTION

## Struktur Data Return

```php
[
    'codes' => [
        'A' => ['code' => 'A', 'jumlah' => 0-9, 'line1' => string, 'line2' => string, 'line3' => string, 'line4' => string],
        ...
    ],
    'radar_values' => [
        'N' => 0-9, 'W' => 0-9, 'F' => 0-9, 'K' => -9-0, 'E' => 0-9, 'Z' => -9-0,
        'R' => 0-9, 'D' => 0-9, 'C' => 0-9, 'X' => 0-9, 'O' => 0-9, 'B' => 0-9,
        'S' => 0-9, 'V' => 0-9, 'T' => 0-9, 'I' => 0-9, 'P' => 0-9, 'L' => 0-9,
        'A' => 0-9, 'G' => 0-9,
    ],
]
```
