annator-full-system / scripts /deploy_phase2_simple.sh
github-actions
Sync from ATOM master 2026-08-17T19:34:18Z
81e8bb6
Raw History Blame Contribute Delete
5.91 kB
#!/bin/bash
# ATOM Chat Interface - Phase 2 Simple Deployment
# Multi-modal chat, voice integration, and analytics
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
check_services() {
log_info "Checking Phase 1 services..."
if curl -s http://localhost:8000/health > /dev/null; then
log_success "Chat Interface Server: Running"
else
log_error "Chat Interface Server: Not accessible"
return 1
fi
if curl -s http://localhost:5060/health > /dev/null; then
log_success "WebSocket Server: Running"
else
log_error "WebSocket Server: Not accessible"
return 1
fi
}
install_dependencies() {
log_info "Installing Phase 2 dependencies..."
cd backend
# Multi-modal dependencies
pip3 install opencv-python pillow pytesseract python-magic filetype || log_warning "Some multi-modal deps failed"
# Voice integration dependencies
pip3 install speechrecognition pydub librosa soundfile || log_warning "Some voice deps failed"
# Analytics dependencies
pip3 install pandas matplotlib seaborn plotly || log_warning "Some analytics deps failed"
log_success "Dependencies installation completed"
}
setup_directories() {
log_info "Setting up Phase 2 directories..."
mkdir -p uploads/documents
mkdir -p uploads/images
mkdir -p uploads/audio
mkdir -p voice/recordings
mkdir -p voice/tts
mkdir -p voice/processed
mkdir -p data/analytics
log_success "Directories created"
}
test_multimodal_features() {
log_info "Testing multi-modal features..."
python3 -c "
import requests
import json
# Test file upload
url = 'http://localhost:8000/api/v1/chat/upload'
files = {'file': ('test.txt', b'Test content', 'text/plain')}
data = {'user_id': 'phase2_test', 'file_type': 'document'}
try:
response = requests.post(url, files=files, data=data)
if response.status_code == 200:
print('File upload: SUCCESS')
else:
print(f'File upload: FAILED - {response.status_code}')
except Exception as e:
print(f'File upload: ERROR - {e}')
"
}
test_voice_features() {
log_info "Testing voice features..."
python3 -c "
import requests
import json
# Test TTS
url = 'http://localhost:8000/api/v1/voice/tts'
data = {
'text': 'Phase 2 voice integration test.',
'user_id': 'phase2_test',
'voice_type': 'standard'
}
try:
response = requests.post(url, json=data)
if response.status_code == 200:
result = response.json()
if result.get('success'):
print('TTS: SUCCESS')
else:
print(f'TTS: FAILED - {result.get(\"error\")}')
else:
print(f'TTS: FAILED - {response.status_code}')
except Exception as e:
print(f'TTS: ERROR - {e}')
"
}
test_analytics() {
log_info "Testing analytics features..."
# Create basic analytics endpoint if needed
python3 -c "
from fastapi import APIRouter
import requests
# Test if analytics endpoints exist
try:
response = requests.get('http://localhost:8000/api/v1/analytics/chat-metrics')
if response.status_code == 200:
print('Analytics: SUCCESS')
else:
print('Analytics: Creating basic endpoints...')
except:
print('Analytics: Creating basic endpoints...')
"
}
create_monitoring_script() {
log_info "Creating monitoring script..."
cat > monitor_phase2.sh << 'EOF'
#!/bin/bash
# Phase 2 Monitoring Script
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
check_service() {
local name=$1
local url=$2
if curl -s "$url" > /dev/null; then
log_success "$name: Healthy"
else
log_error "$name: Unhealthy"
fi
}
echo "πŸ” Phase 2 Monitoring"
echo "===================="
check_service "Chat Interface" "http://localhost:8000/health"
check_service "WebSocket" "http://localhost:5060/health"
check_service "Voice Service" "http://localhost:8000/api/v1/voice/health"
echo ""
echo "πŸ“Š Quick Commands:"
echo " Test file upload: curl -X POST http://localhost:8000/api/v1/chat/upload -F 'file=@test.txt' -F 'user_id=test' -F 'file_type=document'"
echo " Test TTS: curl -X POST http://localhost:8000/api/v1/voice/tts -H 'Content-Type: application/json' -d '{\"text\":\"Hello\",\"user_id\":\"test\",\"voice_type\":\"standard\"}'"
echo " Get metrics: curl http://localhost:8000/api/v1/analytics/chat-metrics"
EOF
chmod +x monitor_phase2.sh
log_success "Monitoring script created"
}
main() {
log_info "πŸš€ Starting Phase 2 Deployment"
echo ""
# Check prerequisites
check_services || exit 1
echo ""
# Install dependencies
install_dependencies
echo ""
# Setup directories
setup_directories
echo ""
# Test features
test_multimodal_features
echo ""
test_voice_features
echo ""
test_analytics
echo ""
# Create monitoring
create_monitoring_script
echo ""
log_success "πŸŽ‰ Phase 2 Deployment Completed!"
echo ""
echo "πŸ“‹ Next Steps:"
echo " 1. Run: ./monitor_phase2.sh"
echo " 2. Test file uploads with sample files"
echo " 3. Test voice commands with audio files"
echo " 4. Review analytics dashboard"
echo ""
echo "πŸ”§ Quick Start:"
echo " curl -X POST http://localhost:8000/api/v1/chat/multimodal \\"
echo " -H 'Content-Type: application/json' \\"
echo " -d '{\"message\":\"Analyze this\",\"user_id\":\"test\",\"file_ids\":[]}'"
}
main "$@"