demo
This commit is contained in:
lxy
2025-08-25 16:01:26 +08:00
commit 5a671c4233
93 changed files with 26892 additions and 0 deletions

View File

@ -0,0 +1,41 @@
# TASK002 - 数据库设计和初始化
## 任务信息
- **任务编号**: TASK002
- **任务名称**: 数据库设计和初始化
- **版本**: V1.0
- **状态**: 完成
## 任务描述
根据API文档设计数据库表结构创建用户、会话、消息、收藏、文件等核心业务表建立表之间的关联关系编写数据库初始化脚本和JPA Entity实体类。
## 验收标准清单
- [x] 完成数据库表结构设计,包括:用户表、会话表、消息表、收藏表、文件表
- [x] 建立表之间的外键关系和索引
- [x] 编写SQL初始化脚本schema.sql和data.sql - 使用Flyway迁移脚本V1__Create_initial_tables.sql
- [x] 创建对应的JPA Entity实体类 - User、Session、Message、Favorite、File
- [x] 配置JPA/Hibernate相关属性 - application.yml中已配置
- [x] 添加数据库版本管理工具Flyway或Liquibase - 已添加Flyway依赖和配置
- [x] 创建Repository接口 - UserRepository、SessionRepository、MessageRepository、FavoriteRepository、FileRepository
- [x] 验证数据库连接和表创建成功 - 测试通过,数据库连接正常
- [x] 编写基础的数据库操作测试 - DatabaseConnectionTest测试基本CRUD操作成功
## 注意事项
1. 用户表需包含id、email、password_hash、nickname、avatar_url、created_at、updated_at等字段
2. 会话表需包含session_idUUID、user_id、title、message_count、last_message_time、created_at等字段
3. 消息表需包含message_idUUID、session_id、roleuser/assistant、content、timestamp、model_used、is_favorited等字段
4. 收藏表需包含favorite_id、user_id、message_id、session_id、created_at等字段
5. 文件表需包含file_id、user_id、session_id、filename、file_path、file_size、file_type、upload_time等字段
6. 所有主键使用UUID或雪花ID避免数据泄露
7. 敏感字段需要考虑加密存储如密码使用BCrypt
8. 添加软删除字段deleted_at用于数据恢复
9. 时间字段统一使用BIGINT存储时间戳
10. 考虑分表分库的预留设计如用户ID取模
11. 为高频查询字段添加索引如session_id、user_id、timestamp等
12. 设置合理的字符集utf8mb4支持emoji
## 相关文件
- src/main/resources/db/migration/
- src/main/java/com/lxy/hsend/entity/
- src/main/java/com/lxy/hsend/repository/
- src/main/resources/application.yml数据库配置