Files
ipam/backend/app/main.py
T
Your Name bca0da7c7d readme
2026-07-20 13:40:05 +08:00

72 lines
1.8 KiB
Python

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)
print("✅ IPAM System initialized successfully!")
print(" Default admin: admin / admin123")
finally:
db.close()
yield
# 关闭时清理
app = FastAPI(
title=settings.APP_NAME,
version=settings.APP_VERSION,
description="Enterprise IP Address Management System",
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"}