#!/bin/bash # ============================================================================= # OrbiQuant IA - Integration Verification Script # Verifies all services are running and can communicate # ============================================================================= set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Default ports BACKEND_PORT=${BACKEND_PORT:-3000} ML_ENGINE_PORT=${ML_ENGINE_PORT:-8001} DATA_SERVICE_PORT=${DATA_SERVICE_PORT:-8002} LLM_AGENT_PORT=${LLM_AGENT_PORT:-8003} OLLAMA_PORT=${OLLAMA_PORT:-11434} echo -e "${BLUE}" echo "╔══════════════════════════════════════════════════════════════╗" echo "║ OrbiQuant IA - Integration Verification ║" echo "╚══════════════════════════════════════════════════════════════╝" echo -e "${NC}" PASSED=0 FAILED=0 # Function to check service check_service() { local name=$1 local url=$2 local expected_status=${3:-200} echo -n " Checking $name... " response=$(curl -s -o /dev/null -w "%{http_code}" "$url" 2>/dev/null || echo "000") if [ "$response" = "$expected_status" ]; then echo -e "${GREEN}✓ OK${NC} (HTTP $response)" ((PASSED++)) return 0 else echo -e "${RED}✗ FAILED${NC} (HTTP $response, expected $expected_status)" ((FAILED++)) return 1 fi } # Function to check JSON endpoint check_json_endpoint() { local name=$1 local url=$2 local json_path=$3 local expected_value=$4 echo -n " Checking $name... " response=$(curl -s "$url" 2>/dev/null) if [ -z "$response" ]; then echo -e "${RED}✗ FAILED${NC} (no response)" ((FAILED++)) return 1 fi # Use jq if available, otherwise just check for 200 if command -v jq &> /dev/null; then value=$(echo "$response" | jq -r "$json_path" 2>/dev/null) if [ "$value" = "$expected_value" ]; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) return 0 else echo -e "${RED}✗ FAILED${NC} (got '$value', expected '$expected_value')" ((FAILED++)) return 1 fi else echo -e "${GREEN}✓ OK${NC} (response received)" ((PASSED++)) return 0 fi } echo "" echo -e "${YELLOW}1. Checking Core Services${NC}" echo "" # Backend API check_service "Backend API Health" "http://localhost:$BACKEND_PORT/health" # ML Engine check_service "ML Engine Health" "http://localhost:$ML_ENGINE_PORT/health" # Data Service check_service "Data Service Health" "http://localhost:$DATA_SERVICE_PORT/health" # LLM Agent check_service "LLM Agent Health" "http://localhost:$LLM_AGENT_PORT/health" echo "" echo -e "${YELLOW}2. Checking Ollama (Local LLM)${NC}" echo "" # Ollama check_service "Ollama API" "http://localhost:$OLLAMA_PORT/api/tags" echo "" echo -e "${YELLOW}3. Checking ML Endpoints${NC}" echo "" # Test ICT Analysis endpoint echo -n " Testing ICT Analysis... " ict_response=$(curl -s -X POST "http://localhost:$ML_ENGINE_PORT/api/ict/EURUSD" 2>/dev/null) if echo "$ict_response" | grep -q "market_bias"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${YELLOW}⚠ Skipped${NC} (may need data service)" fi # Test Ensemble Signal endpoint echo -n " Testing Ensemble Signal... " ensemble_response=$(curl -s -X POST "http://localhost:$ML_ENGINE_PORT/api/ensemble/EURUSD" 2>/dev/null) if echo "$ensemble_response" | grep -q "action"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${YELLOW}⚠ Skipped${NC} (may need data service)" fi echo "" echo -e "${YELLOW}4. Checking API Documentation${NC}" echo "" # Swagger/OpenAPI docs check_service "ML Engine Docs" "http://localhost:$ML_ENGINE_PORT/docs" check_service "Data Service Docs" "http://localhost:$DATA_SERVICE_PORT/docs" check_service "LLM Agent Docs" "http://localhost:$LLM_AGENT_PORT/docs" echo "" echo -e "${YELLOW}5. Checking Database Connectivity${NC}" echo "" # Check via backend (which connects to Postgres) echo -n " PostgreSQL (via Backend)... " if curl -s "http://localhost:$BACKEND_PORT/health" | grep -q "healthy\|ok\|status"; then echo -e "${GREEN}✓ OK${NC}" ((PASSED++)) else echo -e "${YELLOW}⚠ Unknown${NC}" fi echo "" echo "═══════════════════════════════════════════════════════════════" echo "" # Summary TOTAL=$((PASSED + FAILED)) if [ $FAILED -eq 0 ]; then echo -e "${GREEN}All checks passed! ($PASSED/$TOTAL)${NC}" echo "" echo "Your OrbiQuant IA platform is ready!" echo "" echo "Access points:" echo " - Frontend: http://localhost:5173" echo " - Backend API: http://localhost:$BACKEND_PORT" echo " - ML Engine: http://localhost:$ML_ENGINE_PORT/docs" echo " - LLM Agent: http://localhost:$LLM_AGENT_PORT/docs" echo "" exit 0 else echo -e "${YELLOW}Some checks failed: $PASSED passed, $FAILED failed${NC}" echo "" echo "Troubleshooting:" echo " 1. Ensure all services are running: docker compose ps" echo " 2. Check logs: docker compose logs " echo " 3. Verify .env configuration" echo "" exit 1 fi