|
@@ -0,0 +1,179 @@
|
|
|
+### 一、SchemaVan式设计
|
|
|
+
|
|
|
+#### 1. 表设计
|
|
|
+
|
|
|
+1.1 **训练计划表 (TrainingPlan)**
|
|
|
+
|
|
|
+- objectId: String (唯一标识符)
|
|
|
+- createdAt: Date (创建时间)
|
|
|
+- user: Pointer (关联用户)
|
|
|
+- goal: String (健身目标)
|
|
|
+- content: String (训练计划详情)
|
|
|
+- tasks: Array<Pointer (关联的子任务)
|
|
|
+
|
|
|
+1.2 **任务表 (Task)**
|
|
|
+
|
|
|
+- objectId: String (唯一标识符)
|
|
|
+- createdAt: Date (创建时间)
|
|
|
+- plan: Pointer (关联训练计划)
|
|
|
+- type: String (任务类型,如“一次性任务”或“周期性任务”)
|
|
|
+- name: String (任务名称)
|
|
|
+- status: String (任务状态,如“未完成”、“已完成”)
|
|
|
+- count: Number (执行次数)
|
|
|
+- duration: Number (持续时间)
|
|
|
+- frequency: String (周期性任务的频率,如“每日”、“每周”、“每月”,可选)
|
|
|
+
|
|
|
+1.3 **任务执行记录表 (TaskExecution)**
|
|
|
+
|
|
|
+- objectId: String (唯一标识符)
|
|
|
+- createdAt: Date (创建时间)
|
|
|
+- task: Pointer (关联任务)
|
|
|
+- execDate: Date (执行日期)
|
|
|
+- status: String (执行状态,如“完成”、“未完成”)
|
|
|
+
|
|
|
+1.4 **用户表 (User)**
|
|
|
+
|
|
|
+- objectId: String (唯一标识符)
|
|
|
+- createdAt: Date (创建时间)
|
|
|
+- username: String (用户名)
|
|
|
+- email: String (用户邮箱)
|
|
|
+- password: String (用户密码)
|
|
|
+
|
|
|
+1.5 **签到记录表 (SignInRecord)**
|
|
|
+
|
|
|
+- objectId: 字符串 (签到记录唯一标识)
|
|
|
+- user: Pointer (关联用户)
|
|
|
+- signInDate: Date (签到日期)
|
|
|
+- createdAt: Date (创建时间)
|
|
|
+
|
|
|
+#### 2. PlantUML 类图表示
|
|
|
+
|
|
|
+以下是使用PlantUML表示的类图:
|
|
|
+
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+class User {
|
|
|
+ +objectId: String
|
|
|
+ +createdAt: Date
|
|
|
+ +username: String
|
|
|
+ +email: String
|
|
|
+ +password: String
|
|
|
+}
|
|
|
+
|
|
|
+class TrainingPlan {
|
|
|
+ +objectId: String
|
|
|
+ +createdAt: Date
|
|
|
+ +user: Pointer
|
|
|
+ +goal: String
|
|
|
+ +content: String
|
|
|
+ +tasks: Array
|
|
|
+}
|
|
|
+
|
|
|
+class Task {
|
|
|
+ +objectId: String
|
|
|
+ +createdAt: Date
|
|
|
+ +plan: Pointer
|
|
|
+ +type: String
|
|
|
+ +name: String
|
|
|
+ +status: String
|
|
|
+ +count: Number
|
|
|
+ +duration: Number
|
|
|
+ +frequency: String
|
|
|
+}
|
|
|
+
|
|
|
+class TaskExecution {
|
|
|
+ +objectId: String
|
|
|
+ +createdAt: Date
|
|
|
+ +task: Pointer
|
|
|
+ +execDate: Date
|
|
|
+ +status: String
|
|
|
+}
|
|
|
+
|
|
|
+class SignInRecord {
|
|
|
+ +objectId: String
|
|
|
+ +user: Pointer
|
|
|
+ +signInDate: Date
|
|
|
+ +createdAt: Date
|
|
|
+}
|
|
|
+
|
|
|
+User "1" -- "0..*" TrainingPlan
|
|
|
+TrainingPlan "1" -- "0..*" Task
|
|
|
+Task "1" -- "0..*" TaskExecution
|
|
|
+User "1" -- "0..*" SignInRecord
|
|
|
+@enduml
|
|
|
+```
|
|
|
+
|
|
|
+### 设计说明
|
|
|
+
|
|
|
+- **用户表 (User)**: 存储用户的基本信息。
|
|
|
+- **训练计划表 (TrainingPlan)**: 每个用户可以有多个训练计划,每个计划可以包含多个子任务。
|
|
|
+- **任务表 (Task)**: 定义了训练计划中的子任务,支持一次性和周期性任务。
|
|
|
+- **任务执行记录表 (TaskExecution)**: 记录每个任务的执行情况,便于追踪任务的完成状态。
|
|
|
+- **签到记录表 (SignInRecord)**: 记录用户的每日签到情况,确保每个用户每天只能签到一次。
|
|
|
+
|
|
|
+### 二、业务逻辑描述
|
|
|
+
|
|
|
+#### 训练计划的完整逻辑
|
|
|
+
|
|
|
+1. **计划生成逻辑**
|
|
|
+ - 用户在APP内输入健身需求(如减脂、增肌等)和体征信息(性别、年龄、体重)。
|
|
|
+ - APP生成训练计划并存储在表中。`TrainingPlan`
|
|
|
+2. **任务生成逻辑**
|
|
|
+ - 根据训练计划内容生成任务列表,存储在表中。`Task`
|
|
|
+3. **任务执行逻辑**
|
|
|
+ - 用户在TodoList页面查看所有计划和子任务。
|
|
|
+ - 用户填写执行情况并提交,记录在表中。`TaskExecution`
|
|
|
+4. **签到逻辑**
|
|
|
+ - 用户每日登录后,系统记录签到时间,存储在表中,确保每日只能打卡一次。`SignInRecord`
|
|
|
+5. **统计分析**
|
|
|
+ - 系统通过连表查询分析用户的计划完成情况和进度,并展示给用户。
|
|
|
+
|
|
|
+### 业务逻辑图例
|
|
|
+
|
|
|
+以下是根据上述业务逻辑描述生成的PlantUML时序图代码示例:
|
|
|
+
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+actor User
|
|
|
+participant App
|
|
|
+participant TrainingPlan
|
|
|
+participant Task
|
|
|
+participant TaskExecution
|
|
|
+participant SignInRecord
|
|
|
+
|
|
|
+User -> App: 输入健身需求和体征信息
|
|
|
+App -> TrainingPlan: 生成训练计划
|
|
|
+TrainingPlan --> App: 返回训练计划
|
|
|
+
|
|
|
+App -> Task: 根据训练计划生成任务列表
|
|
|
+Task --> App: 插入任务数据
|
|
|
+
|
|
|
+User -> App: 查看TodoList页面
|
|
|
+App -> Task: 加载所有计划和子任务
|
|
|
+App --> User: 展示计划和子任务
|
|
|
+
|
|
|
+User -> App: 提交执行情况
|
|
|
+App -> TaskExecution: 记录执行情况
|
|
|
+TaskExecution --> App: 返回执行记录
|
|
|
+
|
|
|
+App -> Task: 判断任务是否完成
|
|
|
+Task --> App: 更新任务状态
|
|
|
+
|
|
|
+User -> App: 签到
|
|
|
+App -> SignInRecord: 记录签到信息
|
|
|
+SignInRecord --> App: 返回签到记录
|
|
|
+
|
|
|
+App -> User: 展示用户计划完成情况和进度
|
|
|
+@enduml
|
|
|
+```
|
|
|
+
|
|
|
+### 说明
|
|
|
+
|
|
|
+- **用户(User)**在APP中输入健身需求和体征信息,APP生成训练计划并返回。
|
|
|
+- APP根据训练计划生成任务列表并插入任务数据。
|
|
|
+- 用户在TodoList页面查看计划和子任务,并提交执行情况。
|
|
|
+- APP记录执行情况,并判断任务是否完成。
|
|
|
+- 用户每日签到,APP记录签到信息。
|
|
|
+- 最后,APP进行统计分析并将结果展示给用户。
|
|
|
+
|
|
|
+通过这个设计,智能健身APP可以有效地管理用户的训练计划、任务执行和签到记录,提供良好的用户体验。
|