# Artifact Plan: Task 4 - Testing (CLI Interface)

## 1. Judul
Validasi Interaktif: Pengembangan Antarmuka Uji Coba Chatbot Berbasis CLI Terminal

## 2. Tanggal
Rabu, 6 Mei 2026

## 3. Deskripsi
Sebelum mengintegrasikan Chatbot ke dalam API FastAPI (yang rumit untuk di-debug), fase ini bertujuan membangun antarmuka terminal (CLI) lokal. Ini memungkinkan pengembang (kita) untuk menguji langsung siklus PRAL, memverifikasi apakah pengambilan konteks (Graf dan Vector) bekerja, dan mengamati kualitas *response* serta format sitasinya.

## 4. Metodologi
*   **Mock Environment:** CLI akan meminta pengguna memasukkan `session_id` secara manual atau meng-*generate* otomatis, serta meminta `file_hash` statis sebagai "konteks artikel aktif".
*   **Verbose Logging:** Selama mode CLI, semua proses internal (Pemilihan Lapis Konteks, waktu *fetch* DB, proses *Reranking*) akan di-print ke layar untuk mempermudah deteksi *Blind Spot*.

## 5. Keputusan
*   Menggunakan skrip Python standar (tanpa framework tambahan seperti `click` kecuali diperlukan) untuk kesederhanaan.
*   Harus bisa mensimulasikan percakapan berkelanjutan (membuktikan bahwa `chat_history.py` berjalan baik).

## 6. Alur Diagram
```mermaid
sequenceDiagram
    participant U as Developer (Terminal)
    participant C as CLI Script
    participant O as PRAL Orchestrator
    
    U->>C: Input Session ID & File Hash
    loop Chat Session
        U->>C: Ketik Pertanyaan
        C->>O: process_chat(query)
        note over C,O: Tampilkan log proses PRAL ke terminal
        O-->>C: Stream Response
        C-->>U: Cetak Jawaban AI
    end
```

## 7. Struktur Folder (Tree)
```text
scripts/
└── test_chatbot_cli.py
```

## 8. Asumsi
*   Semua modul di `app/services/chatbot/` sudah bisa diimpor tanpa *error*.
*   Lingkungan `.env` dikonfigurasi dengan benar untuk akses basis data.

## 9. Konsep Tabel Metriks
(Murni untuk keperluan *debugging* lokal).

## 10. Konsep Logika Prompting
(Murni untuk keperluan *debugging* lokal).

## 11. Langkah Implementasi
1.  Buat file `test_chatbot_cli.py`.
2.  Implementasikan *looping* `while True:` untuk menerima *input* berkelanjutan.
3.  Format *output* di terminal menggunakan pewarnaan sederhana (opsional) agar membedakan log *system* dan teks *response* AI.

## 12. Tabel Eksekusi Task

| Check | Fase | Task | Detail Task | Deskripsi | Acceptance Criteria |
| :---: | :---: | :--- | :--- | :--- | :--- |
| [ ] | 4A | **Testing** | Setup CLI Loop | Buat *loop* interaktif Python. | Mampu meminta *input hash* awal dan melakukan percakapan bolak-balik tanpa henti hingga di-interupsi. |
| [ ] | 4B | **Testing** | Integrasi Orchestrator | Hubungkan CLI dengan `agent_orchestrator`. | Jawaban dari AI muncul di terminal sesuai konteks *hash* yang dimasukkan. |
| [ ] | 4C | **Testing** | Visual Debugging | Cetak informasi siklus PRAL. | Terminal menampilkan info seperti "Menggunakan Layer 2", "Top 5 chunks ditemukan", sebelum jawaban final muncul. |
