Spaces:
Sleeping
Sleeping
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 错误。
|