from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from contextlib import asynccontextmanager from app.core.config import settings from app.core.database import engine, Base, SessionLocal from app.api.v1 import api_router # 导入所有模型确保创建表 from app.models.network import Network, IPAddress, ScanTask from app.models.snmp import SNMPCredential, NetworkDevice, ARPEntry, MACAddressTable, DeviceInterface from app.models.alert import Alert, AlertRule, WhitelistedMAC from app.models.auth import User, UserRole, UserStatus, Permission, RolePermission, RefreshToken from app.models.audit import AuditLog @asynccontextmanager async def lifespan(app: FastAPI): """应用生命周期管理""" # 启动时创建数据库表 Base.metadata.create_all(bind=engine) # 初始化默认管理员账户 + 默认权限 from app.services.user_service import UserService db = SessionLocal() try: UserService.init_default_admin(db) UserService.init_default_permissions(db) print("✅ 系统初始化完成,默认管理员账户: admin / admin123") finally: db.close() yield # 关闭时清理 app = FastAPI( title=settings.APP_NAME, version=settings.APP_VERSION, description="企业级IP地址管理系统", lifespan=lifespan ) # CORS 配置 app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 注册 API 路由 app.include_router(api_router) @app.get("/") async def root(): """根路径""" return { "name": settings.APP_NAME, "version": settings.APP_VERSION, "docs": "/docs", "redoc": "/redoc" } @app.get("/health") async def health_check(): """健康检查""" return {"status": "healthy"}