Initial commit — GeoOptions Intelligence Cockpit v2.0
Stack: FastAPI + React/TypeScript + SQLite + GPT-4o Features: Radar géopolitique, Marchés, Régime Macro, Journal de Bord MTM, Rapport IA, Super Contexte (base de raisonnement évolutive), Boucle feedback IA. Deploy: Docker + docker-compose + nginx pour openfin.open-squared.tech Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
90
start.ps1
Normal file
90
start.ps1
Normal file
@@ -0,0 +1,90 @@
|
||||
# GeoOptions - Start script
|
||||
# Usage: powershell -ExecutionPolicy Bypass -File c:\DataS\OpenFin\start.ps1
|
||||
|
||||
$Root = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
|
||||
Write-Host ""
|
||||
Write-Host " ============================================" -ForegroundColor Cyan
|
||||
Write-Host " GeoOptions Intelligence Cockpit v2.0" -ForegroundColor Cyan
|
||||
Write-Host " ============================================" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# 1. Kill existing processes on ports 8000 and 5173
|
||||
Write-Host " [1/4] Liberation des ports..." -ForegroundColor Yellow
|
||||
foreach ($port in @(8000, 5173)) {
|
||||
$lines = netstat -ano | Select-String ":$port\s" | Select-String "LISTENING"
|
||||
foreach ($line in $lines) {
|
||||
$p = ($line -split '\s+')[-1].Trim()
|
||||
if ($p -match '^\d+$' -and $p -ne '0') {
|
||||
try {
|
||||
Stop-Process -Id ([int]$p) -Force -ErrorAction Stop
|
||||
Write-Host " Port $port : PID $p stoppe." -ForegroundColor Gray
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Start-Sleep -Seconds 1
|
||||
|
||||
# 2. Write temp bat files
|
||||
$backendBat = "$Root\_start_backend.bat"
|
||||
$frontendBat = "$Root\_start_frontend.bat"
|
||||
|
||||
$backendLines = @(
|
||||
"@echo off",
|
||||
"title GeoOptions Backend",
|
||||
"cd /d `"$Root\backend`"",
|
||||
"if not exist venv python -m venv venv",
|
||||
"call venv\Scripts\activate.bat",
|
||||
"pip install -r requirements.txt -q",
|
||||
"python -m uvicorn main:app --host 0.0.0.0 --port 8000 --reload"
|
||||
)
|
||||
$backendLines | Set-Content -Path $backendBat -Encoding ASCII
|
||||
|
||||
$frontendLines = @(
|
||||
"@echo off",
|
||||
"title GeoOptions Frontend",
|
||||
"cd /d `"$Root\frontend`"",
|
||||
"if not exist node_modules npm install",
|
||||
"npm run dev"
|
||||
)
|
||||
$frontendLines | Set-Content -Path $frontendBat -Encoding ASCII
|
||||
|
||||
# 3. Start backend
|
||||
Write-Host " [2/4] Demarrage du backend..." -ForegroundColor Yellow
|
||||
Start-Process "cmd.exe" -ArgumentList "/k `"$backendBat`"" -WindowStyle Normal
|
||||
|
||||
# 4. Wait until backend port is open (max 90s)
|
||||
Write-Host " [3/4] Attente backend sur port 8000..." -ForegroundColor Yellow
|
||||
$timeout = 90
|
||||
$elapsed = 0
|
||||
$ready = $false
|
||||
while ($elapsed -lt $timeout) {
|
||||
Start-Sleep -Seconds 2
|
||||
$elapsed += 2
|
||||
$tcp = New-Object System.Net.Sockets.TcpClient
|
||||
try {
|
||||
$tcp.Connect("127.0.0.1", 8000)
|
||||
if ($tcp.Connected) { $ready = $true; $tcp.Close(); break }
|
||||
} catch {}
|
||||
finally { if ($tcp) { $tcp.Close() } }
|
||||
Write-Host " ...attente ($elapsed`s / $timeout`s)" -ForegroundColor DarkGray
|
||||
}
|
||||
|
||||
if ($ready) {
|
||||
Write-Host " Backend OK" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host " ATTENTION : backend non repond apres $timeout`s" -ForegroundColor Red
|
||||
Write-Host " Verifie la fenetre GeoOptions Backend pour voir l'erreur." -ForegroundColor Red
|
||||
}
|
||||
|
||||
# 5. Start frontend
|
||||
Write-Host " [4/4] Demarrage du frontend..." -ForegroundColor Yellow
|
||||
Start-Process "cmd.exe" -ArgumentList "/k `"$frontendBat`"" -WindowStyle Normal
|
||||
|
||||
Start-Sleep -Seconds 4
|
||||
Start-Process "http://localhost:5173"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host " Cockpit : http://localhost:5173" -ForegroundColor Green
|
||||
Write-Host " API : http://localhost:8000/docs" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Reference in New Issue
Block a user