main.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. """
  2. 应用入口:创建 FastAPI 实例,启动时初始化关系库,挂载各业务路由模块。
  3. 健康检查:GET /health(无需鉴权)。
  4. """
  5. import logging
  6. import re
  7. from fastapi import FastAPI
  8. from app.core.config import settings
  9. from app.db import init_db
  10. from app.routers import (
  11. assessment, #测评模块
  12. auth, #认证模块
  13. digital_human, #数字人模块
  14. knowledge_graph, #知识图谱模块
  15. learning_analytics, #学情统计模块
  16. modules, #模块登记模块
  17. recommendation, #个性化推荐模块
  18. users, #用户模块
  19. )
  20. #创建FastAPI应用实例
  21. app = FastAPI(title=settings.app_name)
  22. #初始化日志
  23. logger = logging.getLogger("knowmathbot")
  24. #隐藏数据库密码
  25. def _redact_db_url(url: str) -> str:
  26. return re.sub(r"://([^:/?#]+):([^@/?#]+)@", r"://\1:***@", url)
  27. #服务启动时自动建库建表
  28. @app.on_event("startup")
  29. def _startup():
  30. logger.warning("Using DATABASE_URL=%s", _redact_db_url(settings.database_url))
  31. init_db()
  32. #接口检查
  33. @app.get("/health")
  34. def health():
  35. return {"status": "ok"}
  36. # 以下路由统一前缀 /api/v1(见 settings.api_v1_prefix)
  37. app.include_router(auth.router, prefix=settings.api_v1_prefix) #auth:登录、注册、token
  38. app.include_router(users.router, prefix=settings.api_v1_prefix) #users:用户管理
  39. app.include_router(knowledge_graph.router, prefix=settings.api_v1_prefix) #knowledge_graph:知识图谱
  40. app.include_router(digital_human.router, prefix=settings.api_v1_prefix) #digital_human:数字人
  41. app.include_router(recommendation.router, prefix=settings.api_v1_prefix) #recommendation:个性化推荐
  42. app.include_router(assessment.router, prefix=settings.api_v1_prefix) #assessment:测评
  43. app.include_router(learning_analytics.router, prefix=settings.api_v1_prefix) #learning_analytics:学情统计
  44. app.include_router(modules.router, prefix=settings.api_v1_prefix) #modules:模块登记