fix: Windows compatibility and startup scripts
- Add explicit .env loading in config.py for Windows compatibility - Add backend directory to sys.path in main.py to fix module imports - Add start.bat and start-full.bat for Windows startup - Add frontend/package-lock.json for dependency tracking Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,9 +1,17 @@
|
|||||||
import base64
|
import base64
|
||||||
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from pydantic import field_validator
|
from pydantic import field_validator
|
||||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||||
|
|
||||||
|
# Load .env file explicitly - Windows compatibility
|
||||||
|
# This ensures environment variables are loaded before Settings instantiation
|
||||||
|
_env_path = Path(__file__).parent.parent.parent / '.env'
|
||||||
|
if _env_path.exists():
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv(_env_path, override=True)
|
||||||
|
|
||||||
|
|
||||||
class Settings(BaseSettings):
|
class Settings(BaseSettings):
|
||||||
"""应用配置,从环境变量加载."""
|
"""应用配置,从环境变量加载."""
|
||||||
|
|||||||
@@ -8,8 +8,15 @@ This module creates and configures the FastAPI application with:
|
|||||||
- CORS middleware
|
- CORS middleware
|
||||||
- Exception handlers
|
- Exception handlers
|
||||||
"""
|
"""
|
||||||
from contextlib import asynccontextmanager
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Add backend directory to Python path for imports to work
|
||||||
|
backend_dir = Path(__file__).parent.parent
|
||||||
|
if str(backend_dir) not in sys.path:
|
||||||
|
sys.path.insert(0, str(backend_dir))
|
||||||
|
|
||||||
|
from contextlib import asynccontextmanager
|
||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|
||||||
from fastapi import FastAPI, Request, status
|
from fastapi import FastAPI, Request, status
|
||||||
|
|||||||
1758
frontend/package-lock.json
generated
Normal file
1758
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
100
start-full.bat
Normal file
100
start-full.bat
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
echo ========================================
|
||||||
|
echo Git Repo Manager - 一键安装启动
|
||||||
|
echo ========================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 1: 检查 Python
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [错误] 未找到 Python!
|
||||||
|
echo 请先安装 Python 3.8+: https://www.python.org/downloads/
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [√<>] Python 已安装
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 2: 检查 Node.js
|
||||||
|
node --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [警告] 未找到 Node.js,前端开发需要用到
|
||||||
|
echo 安装 Node.js: https://nodejs.org/
|
||||||
|
echo.
|
||||||
|
)
|
||||||
|
|
||||||
|
REM 步骤 3: 检查 .env 文件
|
||||||
|
if not exist ".env" (
|
||||||
|
if exist ".env.example" (
|
||||||
|
echo [1/4] 复制 .env.example 到 .env...
|
||||||
|
copy .env.example .env >nul
|
||||||
|
echo [提示] 请编辑 .env 文件,设置您的密钥!
|
||||||
|
echo 需要设置 GM_ENCRYPT_KEY 和 GM_API_TOKEN
|
||||||
|
echo.
|
||||||
|
notepad .env
|
||||||
|
pause
|
||||||
|
) else (
|
||||||
|
echo [错误] .env.example 文件不存在!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [1/4] .env 配置文件已存在... ✓
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 4: 安装 Python 依赖
|
||||||
|
echo [2/4] 检查 Python 依赖...
|
||||||
|
pip show fastapi >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo 正在安装 Python 依赖...
|
||||||
|
pip install -r backend\requirements.txt
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [错误] 依赖安装失败!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [2/4] Python 依赖已安装... ✓
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 5: 初始化数据库
|
||||||
|
if not exist "data\git_manager.db" (
|
||||||
|
echo [3/4] 初始化数据库...
|
||||||
|
python -m backend.init_db
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [错误] 数据库初始化失败!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [3/4] 数据库已初始化... ✓
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 6: 安装前端依赖(可选)
|
||||||
|
if exist "frontend\package.json" (
|
||||||
|
if not exist "frontend\node_modules\" (
|
||||||
|
echo [提示] 安装前端依赖...
|
||||||
|
echo 跳过(可选,开发模式需要)
|
||||||
|
REM cd frontend && npm install
|
||||||
|
)
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 步骤 7: 启动服务
|
||||||
|
echo [4/4] 启动 Git Repo Manager...
|
||||||
|
echo.
|
||||||
|
echo ========================================
|
||||||
|
echo 服务地址: http://%GM_HOST%:%GM_PORT%
|
||||||
|
echo API 文档: http://%GM_HOST%:%GM_PORT%/docs
|
||||||
|
echo ========================================
|
||||||
|
echo.
|
||||||
|
echo 按 Ctrl+C 停止服务
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 启动 FastAPI 服务器
|
||||||
|
uvicorn backend.app.main:app --host %GM_HOST% --port %GM_PORT% --reload
|
||||||
46
start.bat
Normal file
46
start.bat
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
echo ========================================
|
||||||
|
echo Git Repo Manager - Windows 启动脚本
|
||||||
|
echo ========================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 检查 .env 文件
|
||||||
|
if not exist ".env" (
|
||||||
|
echo [错误] .env 文件不存在!
|
||||||
|
echo.
|
||||||
|
echo 请先复制 .env.example 到 .env 并配置密钥:
|
||||||
|
echo copy .env.example .env
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [1/5] 检查 .env 文件... ✓
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 检查数据库
|
||||||
|
if not exist "data\git_manager.db" (
|
||||||
|
echo [2/5] 数据库不存在,正在初始化...
|
||||||
|
python -m backend.init_db
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [错误] 数据库初始化失败!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo [2/5] 数据库已存在... ✓
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 启动后端服务
|
||||||
|
echo [3/5] 启动后端服务...
|
||||||
|
echo.
|
||||||
|
echo 后端地址: http://%GM_HOST%:%GM_PORT%
|
||||||
|
echo API 文档: http://%GM_HOST%:%GM_PORT%/docs
|
||||||
|
echo.
|
||||||
|
echo 按 Ctrl+C 停止服务
|
||||||
|
echo ========================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
uvicorn backend.app.main:app --host %GM_HOST% --port %GM_PORT% --reload
|
||||||
Reference in New Issue
Block a user