ai-edu-api / memory-bank /systemPatterns.md
geqintan's picture
update
5d3d013

系统模式 (systemPatterns.md)

系统架构

  • 后端框架: FastAPI
  • 数据库: SQLite
  • API 路由: 使用 APIRouter 进行模块化管理,所有 API 路径前缀为 /api
  • CORS: 使用 CORSMiddleware 处理跨域请求。
  • 文件存储: upload/images 目录用于存储上传的图片文件,并通过 /upload 路径提供静态文件服务。

关键技术决策

  • 用户 ID 生成: 采用 uuid.uuid4() 生成全局唯一的用户 ID。
  • 密码存储: 当前直接存储明文密码(待改进:未来应使用哈希加密存储)。
  • 错误处理:
    • 注册时用户名重复:返回 400 Bad Request
    • 登录时用户名或密码错误:返回自定义业务错误码 401
    • 其他内部服务器错误:返回 500 Internal Server Error
  • 数据库初始化: 在 FastAPI 应用启动时通过 @app.on_event("startup") 钩子函数初始化 SQLite 数据库和 users 表。

组件关系

  • app.py: 包含 FastAPI 应用实例、CORS 配置、数据库初始化逻辑、API 路由定义。
  • api_router: 负责定义 /api/auth/register, /api/auth/login, /api/course/add, /api/course/details/{course_id} 等接口。
  • sqlite3: 用于与 ai_edu.db 数据库文件进行交互。
  • pydantic.BaseModel: 用于定义请求体的模型(RegisterRequest, LoginRequest, Course)。

关键实现路径

  • 用户注册: 接收 usernamepassword -> 生成 user_id (UUID) -> 插入 users 表 -> 返回成功响应或错误。
  • 用户登录: 接收 usernamepassword -> 查询 users 表验证凭据 -> 返回成功响应(包含 user_idusername)或错误。
  • 课程添加: 接收课程详情 (title, description, price, duration_hours, level, page_info) -> 插入 courses 表(page_info 存储为 JSON 字符串) -> 返回成功响应。
  • 课程详情查询: 接收 course_id -> 查询 courses 表 -> 返回课程详情(page_info 反序列化为 JSON 对象)或 404 错误。