# AI Session Summary ```yaml session: 2026-07-06-ai-onprem-fase3 project: Ollama/ version: 0.4.0 status: fase1+2+3-selesai next: UI chat Super Apps PWA + user memory agent: Cascade ``` ## TL;DR - **Fase 1 ✅** — Ollama v0.31.1 GPU aktif di PC-Multimedia `10.100.1.14`, `qwen2.5-coder:14b` 11.5 GB VRAM - **Fase 2 ✅** — pgvector Docker `10.100.1.24:5433`, DB `geonet_project_search`, 1.784 chunks dari 1.031 files - **Fase 3 ✅** — `POST /api/v1/ai/chat` live di geonet-console, RAG end-to-end verified - Bug selama deploy: `config/api.php` tertimpa `routes/api.php` saat scp glob → sudah fix + rebuild image ## Infrastruktur aktif | Node | Alamat | Fungsi | |------|--------|--------| | PC-Multimedia | `10.100.1.14:11434` | Ollama GPU, `qwen2.5-coder:14b` + `nomic-embed-text` | | pgvector Docker | `10.100.1.24:5433` | DB `geonet_project_search`, user `geonet_ai` | | geonet-console | `10.100.1.24` Docker | Laravel 11, endpoint `/api/v1/ai/chat` | | VM .26 | `10.100.1.26:11434` | Fallback CPU, `qwen2.5:7b` | ## Files baru di geonet-console (sesi ini) - `app/Services/AiChatService.php` — embed → pgvector → Ollama chat - `app/Http/Controllers/Api/V1/AiChatController.php` — REST handler - `config/pgvector.php` — reads `PGVECTOR_*` env vars - `config/ollama.php` — updated default ke `10.100.1.14:11434` + `qwen2.5-coder:14b` ## Indexer (Ollama/indexer/) - `indexer.py` — crawl monorepo, chunk 80 baris, embed nomic-embed-text, insert pgvector - `requirements.txt` — `psycopg[binary]`, `requests`, `python-dotenv` - `.env.example` — `OLLAMA_BASE_URL`, `PGVECTOR_*`, `REPO_ROOT`, `CHUNK_SIZE=80` - Jalankan ulang: `python indexer.py` dari folder `Ollama/indexer/` dengan `.env` aktif ## Lanjut dari sini 1. **UI chat** di Super Apps PWA — React component, `POST /api/v1/ai/chat`, streaming optional 2. **User memory** — endpoint simpan/load dari tabel `user_memory` di pgvector 3. **Re-index otomatis** — cron harian atau webhook git post-receive 4. **Permission guard** — tambah `ai.chat` ke LDAP group permissions ## Jangan - Expose port 11434 ke internet / reverse proxy publik - Jalankan Ollama di `10.100.1.24` - Simpan secret/password di repo — hanya `.env.example` - Gunakan scp glob `config/*.php routes/*.php` ke folder berbeda — file bisa tertimpa