Files

100 lines
3.2 KiB
Bash

#!/bin/bash
# start_all.sh — Jalankan semua service sekaligus
# Usage: bash start_all.sh
set -e
# Semua path diturunkan dari lokasi skrip ini, bukan ditulis mutlak, supaya
# repo ini bisa di-clone ke folder mana pun di komputer siapa pun. Sebelumnya
# ketiganya menunjuk ke /Users/<satu orang>/..., jadi skrip ini pasti gagal di
# mesin lain.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Layanan RAG ada DI DALAM repo ini (lengkap dengan chroma_db dan documents),
# jadi tidak perlu folder tetangga di luar repo.
RAG_DIR="$SCRIPT_DIR/AI Insight"
BACKEND_DIR="$SCRIPT_DIR/backend"
FRONTEND_DIR="$SCRIPT_DIR"
# `set -e` membuat cd yang gagal berhenti tanpa penjelasan. Periksa dulu supaya
# pesannya bisa dimengerti.
for dir in "$RAG_DIR" "$BACKEND_DIR"; do
if [ ! -d "$dir" ]; then
echo "❌ Folder tidak ditemukan: $dir"
echo " Jalankan skrip ini dari dalam repo hasil clone, jangan disalin keluar."
exit 1
fi
done
if [ ! -f "$BACKEND_DIR/.env" ]; then
echo "⚠️ $BACKEND_DIR/.env belum ada."
echo " Salin dari contohnya dulu: cp backend/.env.example backend/.env"
echo " Tanpa itu backend tidak tahu alamat database dan model LLM."
exit 1
fi
echo "====================================================="
echo " AI Insight - Starting All Services"
echo "====================================================="
# 1. RAG Service (Python FastAPI, port 5002)
echo ""
echo "[1/3] Starting RAG Service (port 5002)..."
pkill -f "rag_service.py" 2>/dev/null || true
sleep 1
cd "$RAG_DIR"
python3 rag_service.py > /tmp/rag_service.log 2>&1 &
RAG_PID=$!
echo " RAG Service PID: $RAG_PID"
echo " Logs: /tmp/rag_service.log"
# Tunggu RAG service ready
echo " Waiting for RAG Service to start..."
for i in {1..15}; do
if curl -s http://localhost:5002/health > /dev/null 2>&1; then
echo " ✅ RAG Service ready!"
break
fi
sleep 2
done
# 2. Backend Node.js (port 5001)
echo ""
echo "[2/3] Starting Backend (port 5001)..."
pkill -f "node server.js" 2>/dev/null || true
sleep 1
cd "$BACKEND_DIR"
npm run dev > /tmp/backend.log 2>&1 &
BACKEND_PID=$!
echo " Backend PID: $BACKEND_PID"
echo " Logs: /tmp/backend.log"
sleep 3
# 3. Frontend Vite (port 3000 atau 5173)
echo ""
echo "[3/3] Starting Frontend..."
cd "$FRONTEND_DIR"
npm run dev > /tmp/frontend.log 2>&1 &
FRONTEND_PID=$!
echo " Frontend PID: $FRONTEND_PID"
echo " Logs: /tmp/frontend.log"
sleep 3
echo ""
echo "====================================================="
echo " All services started!"
# Vite sering jatuh ke port lain kalau 3000 dipakai proses lain, jadi baca
# port yang benar-benar dipilih daripada menebak.
FRONTEND_URL="$(grep -m1 -o 'http://localhost:[0-9]*' /tmp/frontend.log 2>/dev/null || true)"
echo " 🌐 Frontend: ${FRONTEND_URL:-lihat /tmp/frontend.log}"
echo " 🔧 Backend API: http://localhost:5001 (health: /health)"
echo " 🧠 RAG Service: http://localhost:5002"
echo " 🤖 Ollama: http://localhost:11434 (docker compose up -d database llm)"
echo "====================================================="
echo ""
echo "To stop all: pkill -f 'rag_service.py'; pkill -f 'node server.js'; pkill -f 'vite'"
echo ""
echo "Watching logs (Ctrl+C to stop watching, services keep running):"
tail -f /tmp/backend.log