Completed Tasks (T001-T010): - ✅ Project structure created (src/, tests/, docs/, scripts/) - ✅ Python dependencies defined (requirements.txt) - ✅ C# SDK Bridge project initialized (.csproj) - ✅ Configuration template (.env.example) - ✅ Database migration config (alembic.ini) - ✅ Code quality tools (pyproject.toml with ruff, black, mypy) - ✅ Development setup script (setup_dev_environment.ps1) - ✅ Service startup script (start_services.ps1) - ✅ Architecture documentation (docs/architecture.md) - ✅ Revised MVP tasks (tasks-revised-mvp.md - 84 tasks focused on cross-switching) MVP Scope Refined: - Focus: Cross-switching control for GSCView viewers - NO recordings, NO analytics, NO LPR in MVP - REST API only, no UI needed - Phase 2: GeViSet configuration management Ready for Phase 2: SDK Bridge Foundation 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
115 lines
4.4 KiB
PowerShell
115 lines
4.4 KiB
PowerShell
# Geutebruck API - Start All Services
|
|
# This script starts Redis, SDK Bridge, and FastAPI in separate windows
|
|
|
|
param(
|
|
[switch]$SkipRedis,
|
|
[switch]$SkipSdkBridge,
|
|
[switch]$SkipApi
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host "Geutebruck API - Starting Services" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
$RepoRoot = Split-Path -Parent $PSScriptRoot
|
|
|
|
# Check if .env exists
|
|
if (-not (Test-Path "$RepoRoot\.env")) {
|
|
Write-Host "ERROR: .env file not found!" -ForegroundColor Red
|
|
Write-Host "Run: .\scripts\setup_dev_environment.ps1 first" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
# Function to check if port is in use
|
|
function Test-Port {
|
|
param([int]$Port)
|
|
$tcpConnection = Get-NetTCPConnection -LocalPort $Port -ErrorAction SilentlyContinue
|
|
return $null -ne $tcpConnection
|
|
}
|
|
|
|
# Start Redis
|
|
if (-not $SkipRedis) {
|
|
Write-Host "[1/3] Starting Redis..." -ForegroundColor Yellow
|
|
|
|
if (Test-Port 6379) {
|
|
Write-Host " ✓ Redis already running on port 6379" -ForegroundColor Green
|
|
} else {
|
|
$redisCmd = Get-Command redis-server -ErrorAction SilentlyContinue
|
|
if ($redisCmd) {
|
|
Start-Process -FilePath "redis-server" -WindowStyle Normal
|
|
Start-Sleep -Seconds 2
|
|
Write-Host " ✓ Redis started" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " ✗ Redis not found. Install with: choco install redis-64" -ForegroundColor Red
|
|
}
|
|
}
|
|
} else {
|
|
Write-Host "[1/3] Skipping Redis" -ForegroundColor Gray
|
|
}
|
|
|
|
# Start SDK Bridge
|
|
if (-not $SkipSdkBridge) {
|
|
Write-Host "[2/3] Starting SDK Bridge (gRPC Service)..." -ForegroundColor Yellow
|
|
|
|
$sdkBridgePath = "$RepoRoot\src\sdk-bridge\GeViScopeBridge"
|
|
$sdkBridgeExe = "$sdkBridgePath\bin\Debug\net8.0\GeViScopeBridge.exe"
|
|
|
|
if (Test-Path $sdkBridgeExe) {
|
|
if (Test-Port 50051) {
|
|
Write-Host " ✓ SDK Bridge already running on port 50051" -ForegroundColor Green
|
|
} else {
|
|
$sdkBridgeTitle = "Geutebruck SDK Bridge"
|
|
Start-Process powershell -ArgumentList "-NoExit", "-Command", "cd '$sdkBridgePath'; dotnet run --configuration Debug" -WindowStyle Normal
|
|
Start-Sleep -Seconds 3
|
|
Write-Host " ✓ SDK Bridge started on port 50051" -ForegroundColor Green
|
|
}
|
|
} else {
|
|
Write-Host " ⚠ SDK Bridge not built yet" -ForegroundColor Yellow
|
|
Write-Host " Run: cd $sdkBridgePath; dotnet build" -ForegroundColor Yellow
|
|
}
|
|
} else {
|
|
Write-Host "[2/3] Skipping SDK Bridge" -ForegroundColor Gray
|
|
}
|
|
|
|
# Start FastAPI
|
|
if (-not $SkipApi) {
|
|
Write-Host "[3/3] Starting FastAPI Application..." -ForegroundColor Yellow
|
|
|
|
$apiPath = "$RepoRoot\src\api"
|
|
|
|
if (Test-Port 8000) {
|
|
Write-Host " ✓ API already running on port 8000" -ForegroundColor Green
|
|
} else {
|
|
# Check if virtual environment exists
|
|
if (Test-Path "$RepoRoot\.venv\Scripts\Activate.ps1") {
|
|
$apiTitle = "Geutebruck API"
|
|
$startCommand = "cd '$apiPath'; & '$RepoRoot\.venv\Scripts\Activate.ps1'; uvicorn main:app --reload --host 0.0.0.0 --port 8000"
|
|
Start-Process powershell -ArgumentList "-NoExit", "-Command", $startCommand -WindowStyle Normal
|
|
Start-Sleep -Seconds 3
|
|
Write-Host " ✓ FastAPI started on http://localhost:8000" -ForegroundColor Green
|
|
} else {
|
|
Write-Host " ✗ Python virtual environment not found" -ForegroundColor Red
|
|
Write-Host " Run: .\scripts\setup_dev_environment.ps1 first" -ForegroundColor Red
|
|
}
|
|
}
|
|
} else {
|
|
Write-Host "[3/3] Skipping FastAPI" -ForegroundColor Gray
|
|
}
|
|
|
|
# Summary
|
|
Write-Host ""
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host "Services Status:" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host "Redis: http://localhost:6379" -ForegroundColor White
|
|
Write-Host "SDK Bridge: http://localhost:50051 (gRPC)" -ForegroundColor White
|
|
Write-Host "API: http://localhost:8000" -ForegroundColor White
|
|
Write-Host "API Docs: http://localhost:8000/docs" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "All Services Started! 🚀" -ForegroundColor Green
|
|
Write-Host ""
|
|
Write-Host "Press Ctrl+C in each window to stop services" -ForegroundColor Yellow
|