diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..afa36d2 --- /dev/null +++ b/start.bat @@ -0,0 +1,36 @@ +@echo off +setlocal +cd /d "%~dp0" + +set LLM_API_KEY=sk-test +set JWT_SECRET=cyrene-v2-dev-secret-key-32bytes!! +set ADMIN_PASSWORD=admin12345 + +echo ============================================ +echo Cyrene v2 — Windows 启动脚本 +echo ============================================ + +echo [1/2] 编译后端... +cd backend +go build -o cyrene.exe ./cmd/cyrene/ +if %errorlevel% neq 0 ( + echo 后端编译失败 + pause + exit /b 1 +) + +echo [1/2] 启动后端 (http://localhost:8080)... +start "Cyrene Backend" cmd /c "set LLM_API_KEY=%LLM_API_KEY% && set JWT_SECRET=%JWT_SECRET% && set ADMIN_PASSWORD=%ADMIN_PASSWORD% && cyrene.exe" + +cd ..\frontend\web + +echo [2/2] 启动前端 (http://localhost:5173)... +start "Cyrene Frontend" cmd /c "npx vite --host 0.0.0.0" + +echo. +echo Cyrene v2 启动完成 +echo 前端: http://localhost:5173 +echo 后端: http://localhost:8080 +echo 账号: admin / %ADMIN_PASSWORD% +echo. +pause diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..bd40d5a --- /dev/null +++ b/start.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +set -e +cd "$(dirname "$0")" + +# ============================================ +# Cyrene v2 — 一键启动脚本 +# ============================================ + +# 默认环境变量(可通过 .env 或命令行覆盖) +export LLM_API_KEY="${LLM_API_KEY:-sk-test}" +export JWT_SECRET="${JWT_SECRET:-cyrene-v2-dev-secret-key-32bytes!!}" +export ADMIN_PASSWORD="${ADMIN_PASSWORD:-admin12345}" + +BACKEND_DIR="./backend" +FRONTEND_DIR="./frontend/web" + +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +NC='\033[0m' + +log() { echo -e "${GREEN}[cyrene]${NC} $1"; } +warn() { echo -e "${RED}[cyrene]${NC} $1"; } + +# 清理函数 +cleanup() { + log "正在关闭服务..." + kill $BACKEND_PID $FRONTEND_PID 2>/dev/null + wait $BACKEND_PID $FRONTEND_PID 2>/dev/null + log "已退出" +} +trap cleanup EXIT INT TERM + +# ---------- 后端 ---------- +log "编译后端..." +cd "$BACKEND_DIR" +export PATH="/usr/lib/go-1.26/bin:$PATH" +go build -o cyrene ./cmd/cyrene/ 2>&1 || { warn "后端编译失败"; exit 1; } + +log "启动后端 (http://localhost:8080)..." +./cyrene & +BACKEND_PID=$! +sleep 2 + +# 检查后端健康 +if ! curl -s http://localhost:8080/api/v1/health > /dev/null 2>&1; then + warn "后端启动失败,请检查日志" + exit 1 +fi +log "后端启动成功 ✓" + +# ---------- 前端 ---------- +cd "$OLDPWD/$FRONTEND_DIR" +log "安装前端依赖..." +npm install --registry=https://registry.npmmirror.com --silent 2>/dev/null || true + +log "启动前端 (http://localhost:5173)..." +npx vite --host 0.0.0.0 & +FRONTEND_PID=$! +sleep 3 + +echo "" +echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" +echo -e "${BLUE} Cyrene v2 启动完成${NC}" +echo -e "${BLUE} 前端: http://localhost:5173${NC}" +echo -e "${BLUE} 后端: http://localhost:8080${NC}" +echo -e "${BLUE} 账号: admin / ${ADMIN_PASSWORD}${NC}" +echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" +echo "" +echo "按 Ctrl+C 停止所有服务" + +# 等待任意进程退出 +wait -n $BACKEND_PID $FRONTEND_PID 2>/dev/null