将框架从 Flask 迁移到 FastAPI

主要改动:
- 更新依赖:使用 fastapi、uvicorn 替代 Flask
- 数据库层:从 Flask-SQLAlchemy 迁移到纯 SQLAlchemy
- 新增 database.py 管理数据库连接和会话
- 路由层:从 Blueprint 迁移到 APIRouter,添加 Pydantic 模型验证
- 应用层:使用 FastAPI 中间件替代 Flask 插件
- 启动方式:使用 uvicorn 替代 Flask 开发服务器
- 更新 Docker 配置以支持 FastAPI

优势:
- 更高的性能和异步支持
- 自动生成 OpenAPI 文档
- 更好的类型安全和数据验证
- 所有 API 端点保持向后兼容

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-31 10:12:22 +00:00
parent ebd31e2716
commit 6ecd95ad5d
10 changed files with 423 additions and 352 deletions

View File

@@ -9,17 +9,19 @@ cd /app/backend
# 等待数据库初始化
echo "初始化数据库..."
python -c "
from app import create_app
from models import db, User
from database import init_db, SessionLocal
from models import User
import os
app = create_app()
with app.app_context():
# 创建所有表
db.create_all()
# 初始化数据库
init_db()
# 创建会话
db = SessionLocal()
try:
# 检查是否已有用户
existing_user = User.query.first()
existing_user = db.query(User).first()
if not existing_user:
# 从环境变量获取默认用户信息
@@ -29,16 +31,18 @@ with app.app_context():
# 创建默认用户
user = User(username=default_username)
user.set_password(default_password)
db.session.add(user)
db.session.commit()
db.add(user)
db.commit()
print(f'已创建默认用户: {default_username}')
print(f'默认密码: {default_password}')
print('请登录后立即修改密码!')
else:
print('用户已存在,跳过初始化')
finally:
db.close()
"
echo "启动Flask应用..."
# 启动应用
exec python app.py
echo "启动FastAPI应用..."
# 启动应用 (使用uvicorn)
exec uvicorn app:app --host 0.0.0.0 --port 5000