# High-Level End-to-End Architecture

Diagram ini merepresentasikan gambaran besar (Macro Pipeline) dari sistem Knowledge Graph. Menggunakan gaya visual yang terinspirasi dari arsitektur layanan Cloud (seperti AWS), diagram ini secara tegas memisahkan komponen yang beroperasi di **Lingkungan Lokal (Local Environment)** dan layanan pihak ketiga di **Lingkungan Cloud (Cloud Services)**.

```mermaid
flowchart LR
    %% Konfigurasi Warna (Terinspirasi gaya AWS Architecture)
    classDef awsCompute fill:#FF9900,stroke:#232F3E,stroke-width:2px,color:#FFFFFF,rx:5px,ry:5px;
    classDef awsDatabase fill:#3355CC,stroke:#232F3E,stroke-width:2px,color:#FFFFFF,rx:5px,ry:5px;
    classDef awsML fill:#00A4A6,stroke:#232F3E,stroke-width:2px,color:#FFFFFF,rx:5px,ry:5px;
    classDef localData fill:#EEEEEE,stroke:#232F3E,stroke-width:2px,color:#232F3E,rx:5px,ry:5px,stroke-dasharray: 5 5;

    %% Lingkungan Lokal
    subgraph LocalEnv ["🏢 Local Environment (Server/VM)"]
        direction TB
        Input["📄 Literature Files (.pdf)"]:::localData
        Config["⚙️ config/thresholds.json"]:::localData
        
        CoreApp("🖥️ Main Ingestion Pipeline<br/>(Hybrid Parser, LLM Extractor, Retriever)"):::awsCompute
        CronJob("⏱️ Background Worker<br/>(update_global_threshold.py)"):::awsCompute
        
        Input -->|1. Baca File| CoreApp
        CoreApp <-->|2. Baca Thresholds| Config
        CronJob -->|3. Tulis Hasil Kalibrasi| Config
    end

    %% Layanan Cloud Eksternal
    subgraph CloudEnv ["☁️ Cloud Services (3rd Party)"]
        direction TB
        LLM("🧠 LLM Provider<br/>(Alibaba DashScope / OpenAI)"):::awsML
        Neo4j[("🕸️ Neo4j AuraDB<br/>(Graph & Vector DB)")]:::awsDatabase
        Supabase[("🗄️ Supabase<br/>(PostgreSQL Chunks)")]:::awsDatabase
    end

    %% Koneksi Local ke Cloud
    CoreApp <-->|A. Prompting & Reasoning| LLM
    CoreApp -->|B. Store Raw Chunks| Supabase
    CoreApp <-->|C. Vector Search & Simpan Nodes/Edges| Neo4j
    
    CronJob -.->|D. Query Global Status & Sampling| Neo4j
```

### Penjelasan Komponen:
1. **Local Environment:** Menangani logika bisnis utama. `Main Ingestion Pipeline` menarik PDF, mengekstrak teks, dan berkoordinasi dengan *Cloud*. `Background Worker` bertugas mengambil data statistik dari *database* secara asinkron untuk memperbarui nilai batas dinamis (*threshold*) secara lokal (JSON).
2. **Cloud Services:** Beban komputasi AI (pemahaman bahasa) diserahkan ke **LLM Provider**. Penyimpanan relasi, vektor, dan data grafik dipegang oleh **Neo4j AuraDB**. Penyimpanan dokumen utuh/mentah (untuk menghindari beban grafik yang berlebihan) di-offload ke **Supabase**.
