schema.md 6.6 KB

一、Schema范式设计

个性化推荐模块

  • 模块描述 用户可以输入身高,体重,年龄,选择性别和输入补充信息(包括职业:非必填,喜好:非必填,天气:非必填,温度:非必填,其他需求:显高显瘦?儒雅甜美?等),AI会提供量身定制的服装和配饰建议并且保存AI生成的推荐结果以及用户信息和用户输入的信息。

    1.表结构设计

    UserProfile(用户表)

  • objectId:唯一标识符

  • createdAt:创建时间

  • height: Float (用户身高,以cm为单位)

  • weight: Float (用户体重,以kg为单位)

  • age: Integer (用户年龄)

  • gender: String (用户性别)

  • occupation: String (用户职业,非必填)

  • preferences: String (用户喜好,非必填)

  • weather: String (用户天气偏好,非必填)

  • temperature: String (用户温度偏好,非必填)

  • otherNeeds: String (其他需求,非必填)

    ClothingItem(服装表)

  • objectId:唯一标识符

  • createdAt:创建时间

  • name: String (服装名称)

  • type: String (服装类型,)

  • size: String (服装尺码,例如 "S", "M", "L", "XL")

  • color: String (服装颜色)

  • style: String (服装风格)

  • recommendedFor: Pointer (指向推荐给的用户)

AccessoryItem(配饰表)

  • objectId:唯一标识符
  • createdAt:创建时间
  • name (配饰名称)
  • type (配饰类型,如项链、手表等)
  • material (配饰材质)
  • style (配饰风格)
  • recommendedFor (推荐给的用户,Pointer)

Recommendation(穿搭推荐表)

  • objectId:唯一标识符
  • createdAt:创建时间
  • userProfile: Pointer (指向用户)
  • clothingItems: Array (推荐的服装)
  • accessoryItems: Array (推荐的配饰)

    2.PlantUML类图设计

    @startuml
    class UserProfile {
    +objectId: String
    +createdAt: Date
    +height: Float
    +weight: Float
    +age: Int
    +gender: String
    +occupation: String
    +preferences: String
    +weather: String
    +temperature: String
    +otherNeeds: String
    }
    
    class ClothingItem {
    +objectId: String
    +createdAt: Date
    +name: String
    +type: String
    +size: String
    +color: String
    +style: String
    +recommendedFor: Pointer
    }
    
    class AccessoryItem {
    +objectId: String
    +createdAt: Date
    +name: String
    +type: String
    +material: String
    +style: String
    +recommendedFor: Pointer
    }
    
    class Recommendation {
    +objectId: String
    +createdAt: Date
    +userProfile: Pointer
    +clothingItems: Array>
    +accessoryItems: Array>
    }
    
    UserProfile "1" -- "0..*" ClothingItem : contains
    UserProfile "1" -- "0..*" AccessoryItem : contains
    UserProfile "1" -- "0..*" Recommendation : makes
    @enduml
    

  • Language:plantuml

    3.设计说明

    UserProfile 表存储用户的基本信息和个性化需求。 ClothingItem 和 AccessoryItem 表分别存储服装和配饰的信息,并通过 Pointer 关联到推荐的用户。 Recommendation 表用于存储为特定用户生成的推荐,包括推荐的服装和配饰。 这种设计符合第三范式(3NF),确保数据的规范化和减少冗余。

    二、业务逻辑描述

    个性化推荐的完整逻辑

    个性化推荐生成逻辑

    • 用户在APP内,通过文本生成穿搭推荐

      • 数据来源
        • 用户输入:用户的身高,体重,年龄,选择性别和输入补充信息(包括职业:非必填,喜好:非必填,天气:非必填,温度:非必填,其他需求:显高显瘦?儒雅甜美?等)
        • 用户体征:性别、年龄、体重等
      • 文本生成
        • 提示词:严格限制json格式,输出推荐的穿搭方案列表(附带当前时间,用于时间的生成)
      • 生成结果:recommendList

        • 循环数组,向Recommendation表逐个插入数据。

          
          [
          {
          "objectId": "rec1",
          "createdAt": "2024-12-09T22:00:00Z",
          "userProfile": "user1",
          "clothingItems": [
          "clothing1",
          "clothing2"
          ],
          "accessoryItems": [
          "accessory1",
          "accessory2"
          ]
          },
          {
          "objectId": "rec2",
          "createdAt": "2024-12-09T22:00:00Z",
          "userProfile": "user2",
          "clothingItems": [
          "clothing3",
          "clothing4"
          ],
          "accessoryItems": [
          "accessory3"
          ]
          },
          {
          "objectId": "rec3",
          "createdAt": "2024-12-09T22:00:00Z",
          "userProfile": "user3",
          "clothingItems": [
          "clothing5"
          ],
          "accessoryItems": [
          "accessory4",
          "accessory5"
          ]
          },
          {
          "objectId": "rec4",
          "createdAt": "2024-12-09T22:00:00Z",
          "userProfile": "user4",
          "clothingItems": [
          "clothing6",
          "clothing7"
          ],
          "accessoryItems": []
          },
          {
          "objectId": "rec5",
          "createdAt": "2024-12-09T22:00:00Z",
          "userProfile": "user5",
          "clothingItems": [
          "clothing8"
          ],
          "accessoryItems": [
          "accessory6"
          ]
          }
          ]
          

    个性化推荐业务逻辑图例

    @startuml
    actor User
    participant "APP" as App
    participant "Recommendation Service" as RecService
    participant "Recommendation Database" as RecDB
    
    User -> App: 输入身高、体重、年龄、性别等信息
    App -> RecService: 发送用户输入数据
    RecService -> RecService: 处理用户输入数据
    RecService -> RecService: 生成推荐穿搭方案
    RecService -> RecService: 准备推荐列表 (recommendList)
    
    loop 插入推荐数据
        RecService -> RecDB: 插入推荐数据
    end
    
    RecDB -> RecService: 返回插入结果
    RecService -> App: 返回推荐结果给用户
    App -> User: 显示推荐的穿搭方案列表
    @enduml
    

    时序图说明

    1. 用户输入: 用户在 APP 内输入身高、体重、年龄、性别等信息。
    2. 发送数据: APP 将用户输入的数据发送给 Recommendation Service。
    3. 处理输入: Recommendation Service 处理用户的输入数据。
    4. 生成推荐: Recommendation Service 根据用户输入生成推荐穿搭方案。
    5. 准备推荐列表: Recommendation Service 准备一个推荐列表(recommendList)。
    6. 插入推荐数据: 通过循环,Recommendation Service 将推荐数据逐个插入到 Recommendation Database。
    7. 返回插入结果: Recommendation Database 返回插入结果给 Recommendation Service。
    8. 返回推荐结果: Recommendation Service 将推荐结果返回给 APP。
    9. 显示结果: APP 显示推荐的穿搭方案列表给用户。

    这个时序图清晰地展示了个性化推荐生成逻辑的每一步,描述了用户与系统之间的交互过程。