First commit

This commit is contained in:
Saufi
2026-05-18 08:56:23 +08:00
commit fd3d3a4d2b
147 changed files with 22099 additions and 0 deletions

129
.env.example Normal file
View File

@@ -0,0 +1,129 @@
# ═══════════════════════════════════════════════════════════════════
# SISTEM PANGKALAN PENGETAHUAN — Laravel 11
# Salin fail ini menjadi .env dan isi nilai yang sesuai
# ═══════════════════════════════════════════════════════════════════
# ── Aplikasi ──────────────────────────────────────────────────────
APP_NAME="Pangkalan Pengetahuan"
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000
APP_LOCALE=ms
APP_FALLBACK_LOCALE=ms
APP_FAKER_LOCALE=ms_MY
APP_MAINTENANCE_DRIVER=file
BCRYPT_ROUNDS=12
# ── Log ───────────────────────────────────────────────────────────
LOG_CHANNEL=stack
LOG_STACK=single
LOG_LEVEL=debug
# ── Database MySQL ────────────────────────────────────────────────
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=knowledge_base
DB_USERNAME=root
DB_PASSWORD=
# ── Sesi ──────────────────────────────────────────────────────────
SESSION_DRIVER=database
SESSION_LIFETIME=480
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
# ── Queue ─────────────────────────────────────────────────────────
# Gunakan 'database' untuk development, 'redis' untuk production
QUEUE_CONNECTION=database
# ── Cache ─────────────────────────────────────────────────────────
CACHE_STORE=database
# ── Storage ───────────────────────────────────────────────────────
FILESYSTEM_DISK=local
# ── Ollama ────────────────────────────────────────────────────────
# URL Ollama yang berjalan secara lokal
OLLAMA_BASE_URL=http://localhost:11434
# Model untuk chat/generate
# Pilihan: llama3, mistral, qwen2, gemma2
OLLAMA_CHAT_MODEL=llama3
# Model untuk embedding
# Pilihan: nomic-embed-text (disyorkan), mxbai-embed-large
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
# Timeout (saat)
OLLAMA_CONNECT_TIMEOUT=5
OLLAMA_CHAT_TIMEOUT=120
OLLAMA_EMBED_TIMEOUT=30
# Retry
OLLAMA_RETRY_TIMES=2
OLLAMA_RETRY_SLEEP=1000
# Parameter model
OLLAMA_TEMPERATURE=0.1
OLLAMA_TOP_P=0.9
OLLAMA_NUM_CTX=4096
# ── Qdrant ────────────────────────────────────────────────────────
QDRANT_BASE_URL=http://localhost:6333
QDRANT_API_KEY=
QDRANT_COLLECTION=knowledge_base
# Saiz vector — MESTI sepadan dengan model embedding
# nomic-embed-text: 768
# mxbai-embed-large: 1024
QDRANT_VECTOR_SIZE=768
QDRANT_VECTOR_DISTANCE=Cosine
# Carian
QDRANT_TOP_K=5
QDRANT_SCORE_THRESHOLD=0.3
# Timeout
QDRANT_CONNECT_TIMEOUT=5
QDRANT_REQUEST_TIMEOUT=30
# Batch size untuk upsert
QDRANT_BATCH_SIZE=50
# ── Knowledge Base ────────────────────────────────────────────────
# Upload
KB_MAX_FILE_SIZE=20480
KB_STORAGE_DISK=local
# Chunking
KB_CHUNK_MAX_WORDS=500
KB_CHUNK_OVERLAP_WORDS=75
KB_CHUNK_MIN_WORDS=30
# RAG
KB_RAG_MAX_CHUNKS=5
KB_RAG_MAX_CONTEXT_WORDS=2000
# Rate limiting chatbot (request per minit per IP)
KB_CHAT_RATE_LIMIT=20
# Queue names
KB_QUEUE_INGESTION=default
KB_QUEUE_EMBEDDING=default
KB_QUEUE_CHAT_LOG=default
# ── Mail (optional) ───────────────────────────────────────────────
MAIL_MAILER=log
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="noreply@majlis.gov.my"
MAIL_FROM_NAME="${APP_NAME}"
VITE_APP_NAME="${APP_NAME}"