Files
FastapiAdmin/backend/main.py
T
zhangtao 01fd6c8ea4 docs(backend): 重构后端README文档,完善项目文档与开发指南
- 全面更新README,添加项目特性、架构设计与技术栈介绍
- 详细补充项目结构说明及模块设计规范
- 增加快速开始步骤,包括环境配置、数据库初始化和服务启动
- 补充主要API模块路径和认证授权使用示例
- 添加开发指南、数据库迁移与测试方法
- 集成监控、日志级别说明及性能监控内容
- 完善Docker、传统部署及Nginx配置示例
- 添加贡献指南和代码规范说明
- 新增MCP模块概述及智能对话API接口文档
- 清理和移除module_ai中旧的mcp_server相关实现代码
- 在api/v1初始化文件中注册AI模块路由
- 修改resource模块,增强资源路径安全检查和文件类型检测逻辑
- 增强资源搜索和上传服务的健壮性及安全性
2025-09-08 00:45:34 +08:00

91 lines
2.4 KiB
Python
Executable File

# -*- coding: utf-8 -*-
import os
import uvicorn
import typer
from fastapi import FastAPI
from alembic import command
from alembic.config import Config
from app.common.enums import EnvironmentEnum
shell_app = typer.Typer()
# 初始化 Alembic 配置
alembic_cfg = Config("alembic.ini")
def create_app() -> FastAPI:
from app.config.setting import settings
from app.plugin.init_app import (
register_middlewares,
register_exceptions,
register_routers,
register_fastapi_mcp,
register_files,
reset_api_docs,
lifespan
)
# 创建FastAPI应用
app = FastAPI(**settings.FASTAPI_CONFIG, lifespan=lifespan)
# 注册异常处理器
register_exceptions(app)
# 注册中间件
register_middlewares(app)
# 注册路由
register_routers(app)
# 注册静态文件
register_files(app)
# 重设API文档
reset_api_docs(app)
# 注册FastAPI-MCP
register_fastapi_mcp(app)
return app
@shell_app.command()
def run(env: EnvironmentEnum = typer.Option(EnvironmentEnum.DEV, "--env", help="运行环境 (dev, prod)")):
typer.echo("项目启动中..")
# 设置环境变量
os.environ["ENVIRONMENT"] = env.value
# 确保在设置环境变量后导入配置
from app.config.setting import settings
# 启动uvicorn服务
uvicorn.run(
app='main:create_app',
**settings.UVICORN_CONFIG
)
@shell_app.command()
def revision(message: str, env: EnvironmentEnum = typer.Option(EnvironmentEnum.DEV, "--env", help="运行环境 (dev, test, prod)")):
"""
生成新的 Alembic 迁移脚本。
"""
os.environ["ENVIRONMENT"] = env.value
command.revision(alembic_cfg, message=message, autogenerate=True)
typer.echo(f"迁移脚本已生成: {message}")
@shell_app.command()
def upgrade(env: EnvironmentEnum = typer.Option(EnvironmentEnum.DEV, "--env", help="运行环境 (dev, test, prod)")):
"""
应用最新的 Alembic 迁移。
"""
os.environ["ENVIRONMENT"] = env.value
command.upgrade(alembic_cfg, "head")
typer.echo("所有迁移已应用。")
if __name__ == '__main__':
# 启动服务
# python3 main.py run --env=dev(不加默认为dev)
# 生成迁移
# python3 main.py revision "初始化迁移" --env=dev(不加默认为dev)
# 应用迁移
# python3 main.py upgrade --env=dev(不加默认为dev)
shell_app()