@echo off
chcp 65001 >nul
echo ========================================
echo     AggRoot 项目 Windows 安装脚本
echo ========================================
echo.

REM 检查 Node.js
where node >nul 2>nul
if %errorlevel% neq 0 (
    echo ❌ 错误: Node.js 未安装
    echo.
    echo 请先安装 Node.js (版本 >= 20.0.0)
    echo 下载地址: https://nodejs.org/
    echo.
    pause
    exit /b 1
)

for /f "tokens=*" %%i in ('node -v') do set NODE_VERSION=%%i
echo ✅ Node.js 版本: %NODE_VERSION%
echo.

REM 检查 npm
where npm >nul 2>nul
if %errorlevel% neq 0 (
    echo ❌ 错误: npm 未安装
    echo.
    pause
    exit /b 1
)

echo 📦 开始安装 AggRoot 项目...
echo.

REM 步骤 1: 安装依赖
echo [1/3] 安装依赖...
call npm install
if %errorlevel% neq 0 (
    echo ⚠️ 警告: 依赖安装遇到问题
    echo 尝试使用淘宝镜像...
    call npm config set registry https://registry.npmmirror.com
    call npm install
    if %errorlevel% neq 0 (
        echo ❌ 错误: 依赖安装失败
        echo 请检查网络连接或手动安装
        pause
        exit /b 1
    )
)
echo ✅ 依赖安装完成
echo.

REM 步骤 2: 重建原生模块
echo [2/3] 重建原生模块...
echo 注意: 这可能需要几分钟时间...
call npm run rebuild:windows
if %errorlevel% neq 0 (
    echo ⚠️ 警告: Windows 特定重建失败，尝试标准重建...
    call npm run rebuild-native
    if %errorlevel% neq 0 (
        echo ⚠️ 警告: 原生模块重建失败
        echo 如果项目运行正常，可以忽略此警告
        echo 如果遇到模块错误，请安装 Visual Studio Build Tools
    ) else (
        echo ✅ 原生模块重建完成
    )
) else (
    echo ✅ 原生模块重建完成
)
echo.

REM 步骤 3: 安装浏览器
echo [3/4] 安装 Playwright 浏览器...
set PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
call npx playwright install chromium
if %errorlevel% neq 0 (
    echo 淘宝镜像失败，尝试官方源...
    set PLAYWRIGHT_DOWNLOAD_HOST=
    call npx playwright install chromium
    if !errorlevel! neq 0 (
        echo ⚠️ 警告: 浏览器安装失败，将在首次使用时自动下载
    ) else (
        echo ✅ 浏览器安装完成
    )
) else (
    echo ✅ 浏览器安装完成
)
echo.

REM 步骤 4: 构建项目
echo [4/4] 构建项目...
call npm run build:dev
if %errorlevel% neq 0 (
    echo ❌ 错误: 构建失败
    echo 请检查 TypeScript 配置
    pause
    exit /b 1
)
echo ✅ 项目构建完成
echo.

echo ========================================
echo            🎉 安装完成！
echo ========================================
echo.
echo 运行以下命令启动项目：
echo.
echo   npm run dev    ^# 开发模式（热重载）
echo   npm start      ^# 生产模式
echo.
echo 其他有用命令：
echo   npm test       ^# 运行测试
echo   npm run lint   ^# 代码检查
echo   npm run format ^# 代码格式化
echo.
echo 查看 README.md 获取详细文档
echo 查看 INSTALL.md 获取安装说明
echo.
echo ========================================
pause