""" 应用入口:创建 FastAPI 实例,启动时初始化关系库,挂载各业务路由模块。 健康检查:GET /health(无需鉴权)。 """ import logging import re from fastapi import FastAPI from app.core.config import settings from app.db import init_db from app.routers import ( assessment, #测评模块 auth, #认证模块 digital_human, #数字人模块 knowledge_graph, #知识图谱模块 learning_analytics, #学情统计模块 modules, #模块登记模块 recommendation, #个性化推荐模块 users, #用户模块 ) #创建FastAPI应用实例 app = FastAPI(title=settings.app_name) #初始化日志 logger = logging.getLogger("knowmathbot") #隐藏数据库密码 def _redact_db_url(url: str) -> str: return re.sub(r"://([^:/?#]+):([^@/?#]+)@", r"://\1:***@", url) #服务启动时自动建库建表 @app.on_event("startup") def _startup(): logger.warning("Using DATABASE_URL=%s", _redact_db_url(settings.database_url)) init_db() #接口检查 @app.get("/health") def health(): return {"status": "ok"} # 以下路由统一前缀 /api/v1(见 settings.api_v1_prefix) app.include_router(auth.router, prefix=settings.api_v1_prefix) #auth:登录、注册、token app.include_router(users.router, prefix=settings.api_v1_prefix) #users:用户管理 app.include_router(knowledge_graph.router, prefix=settings.api_v1_prefix) #knowledge_graph:知识图谱 app.include_router(digital_human.router, prefix=settings.api_v1_prefix) #digital_human:数字人 app.include_router(recommendation.router, prefix=settings.api_v1_prefix) #recommendation:个性化推荐 app.include_router(assessment.router, prefix=settings.api_v1_prefix) #assessment:测评 app.include_router(learning_analytics.router, prefix=settings.api_v1_prefix) #learning_analytics:学情统计 app.include_router(modules.router, prefix=settings.api_v1_prefix) #modules:模块登记