| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- """
- 应用入口:创建 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:模块登记
|