schema.md 5.3 KB

一、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表示的类图:

@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时序图代码示例:

@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可以有效地管理用户的训练计划、任务执行和签到记录,提供良好的用户体验。