@echo off
chcp 65001 >nul
title MathAI 本地服务一键启动
:: ============================================
:: MathAI 本地开发环境一键启动脚本
:: 依赖: MySQL 服务需提前运行
:: ============================================
setlocal enabledelayedexpansion
set “ROOT=%~dp0”
set “BACKEND=%ROOT%source\backend”
set “FRONTEND=%ROOT%source\frontend”
set “CHROMA_DATA=%ROOT%chroma_data”
:: ChromaDB 数据目录
if not exist “%CHROMA_DATA%” mkdir “%CHROMA_DATA%”
echo ╔══════════════════════════════════════════╗
echo ║ MathAI 本地服务一键启动 ║
echo ╚══════════════════════════════════════════╝
echo.
echo 工作目录: %ROOT%
echo.
:: —- 检查 MySQL 是否可连 —-
echo [检测] MySQL 连接状态 …
mysql -u root -h 127.0.0.1 -P 3306 -e “SELECT 1” >nul 2>&1
if %errorlevel% neq 0 (
echo [!] 未检测到 MySQL (127.0.0.1:3306)
echo 请确保 MySQL 服务已启动。
echo 如果使用 Docker: docker run -d ^
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=… mysql:8.0
echo.
) else (
echo [OK] MySQL 连接正常
)
echo.
:: —- 1. ChromaDB —-
echo [1/4] 启动 ChromaDB (端口 8080) …
start “ChromaDB” /min cmd /c “cd /d “%BACKEND%” ^
&& call venv\Scripts\activate.bat ^
&& chroma run –host localhost –port 8080 –path “%CHROMA_DATA%””
timeout /t 4 /nobreak >nul
:: —- 2. 后端 FastAPI —-
echo [2/4] 启动后端 FastAPI (端口 8001) …
start “Backend” cmd /c “cd /d “%BACKEND%” ^
&& call venv\Scripts\activate.bat ^
&& python -m uvicorn app.main:app –host 0.0.0.0 –port 8001 –reload”
timeout /t 5 /nobreak >nul
:: —- 3. 后台 Worker —-
echo [3/4] 启动后台 Worker (导入队列) …
start “Worker” /min cmd /c “cd /d “%BACKEND%” ^
&& call venv\Scripts\activate.bat ^
&& python -m app.worker”
timeout /t 2 /nobreak >nul
:: —- 4. 前端 Nuxt —-
echo [4/4] 启动前端 Nuxt (端口 4001) …
start “Frontend” cmd /c “cd /d “%FRONTEND%” ^
&& pnpm dev”
echo.
echo ╔══════════════════════════════════════════╗
echo ║ 所有服务启动命令已发出 ║
echo ║ 请保持各命令行窗口运行 ║
echo ╠══════════════════════════════════════════╣
echo ║ 服务 地址 ║
echo ║ ChromaDB http://localhost:8080 ║
echo ║ 后端 API http://localhost:8001 ║
echo ║ API 文档 http://localhost:8001/docs ║
echo ║ 前端 http://localhost:4001 ║
echo ║ 导入 Worker 后台窗口 ║
echo ╚══════════════════════════════════════════╝
echo.
echo 提示: 按任意键关闭本窗口(各服务仍会继续运行)
pause