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:
panw
2026-03-30 19:23:23 +08:00
parent 44921c5646
commit c625425971
5 changed files with 1920 additions and 1 deletions

View File

@@ -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):
"""应用配置,从环境变量加载.""" """应用配置,从环境变量加载."""

View File

@@ -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

File diff suppressed because it is too large Load Diff

100
start-full.bat Normal file
View 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
View 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