File size: 2,088 Bytes
0fee08c
 
 
 
 
 
 
5d3d013
0fee08c
 
 
 
 
 
 
 
 
 
 
 
56d652f
0fee08c
5d3d013
0fee08c
 
 
 
5d3d013
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 系统模式 (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`)。

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