# 一、Schema范式设计 ## 个性化推荐模块 - 表设计 ``` 1._User表 objectId: String (默认) createdAt: Date (默认) userId:String password:String realname:String age: Number gender: String email:String bio:String(个人简介) avatar:String imagery:String(用户画像) 2.FilmRecommendation objectId: String (默认) createdAt: Date (默认) user: Pointer title: String(剧名) genre: String(题材) grade: String(评分) desc: String(描述) ``` ## AI陪聊助手模块 - 表设计 ``` 1.FilmRole表 objectId: String (默认) createdAt: Date (默认) name: String nickname: String title: String avater: String description: String traits: String 2.FilmPartner表 objectId: String (默认) createdAt: Date (默认) name: String age: Number avater: String desc: String 3.FilmChat表 objectId: String (默认) createdAt: Date (默认) user: Pointer filmrole: Pointer filmpartner: Pointer title: String dialogue: String ``` ## 社区模块 - 表设计 ``` 1.FilmPost表 objectId: String (默认) createdAt: Date (默认) author: Pointer title: String label:String(话题) content: String likesCount: Number commentCount:Number status: String (状态,默认为通过) 2.FilmComment表 objectId: String (默认) createdAt: Date (默认) post: Pointer user: Pointer content: String status: String 3.FilmPostRating表 objectId: String (默认) createdAt: Date (默认) user: Pointer post: Pointer ratingValue: Number comment: String (可选) ``` # 类图 ```plantuml @startuml class User { +String objectId +Date createdAt +String userId +String password +String realname +Number age +String gender +String email +String bio +String avatar +String imagery } class FilmRecommendation { +String objectId +Date createdAt +Pointer user +String title +String genre +String grade +String desc } class FilmRole { +String objectId +Date createdAt +String name +String nickname +String title +String avatar +String description +String traits } class FilmPartner { +String objectId +Date createdAt +String name +Number age +String avatar +String desc } class FilmChat { +String objectId +Date createdAt +Pointer user +Pointer filmrole +Pointer filmpartner +String title +String dialogue } class FilmPost { +String objectId +Date createdAt +Pointer author +String title +String label +String content +Number likesCount +Number commentCount +String status } class FilmComment { +String objectId +Date createdAt +Pointer post +Pointer user +String content +String status } class FilmPostRating { +String objectId +Date createdAt +Pointer user +Pointer post +Number ratingValue +String comment } User "1" -- "0..*" FilmRecommendation : has User "1" -- "0..*" FilmChat : initiates FilmRole "1" -- "0..*" FilmChat : participates FilmPartner "1" -- "0..*" FilmChat : participates User "1" -- "0..*" FilmPost : creates FilmPost "1" -- "0..*" FilmComment : has User "1" -- "0..*" FilmComment : writes User "1" -- "0..*" FilmPostRating : rates FilmPost "1" -- "0..*" FilmPostRating : receives @enduml ``` # 个性化推荐模块 - AI陪聊搭子通过分析与用户的聊天记录和用户画像,智能生成影视剧推荐列表,并显示。 ## 时序图 - 业务逻辑描述 - 数据分析:AI分析用户的聊天记录,以了解用户的兴趣和偏好。 - AI同时获取用户的画像信息(例如年龄、性别、兴趣等)。 - 推荐生成:基于分析结果,AI直接生成影视剧推荐列表。 - 展示推荐:系统将生成的推荐列表展示给用户。 ```plantuml @startuml actor User participant "AI陪聊助手" as ChatBot participant "用户数据库" as UserProfileDB participant "聊天记录数据库" as ChatHistoryDB participant "推荐系统" as RecommendationSystem ChatBot -> ChatHistoryDB: 获取聊天记录 ChatBot -> UserProfileDB: 获取用户画像 ChatBot -> ChatHistoryDB: 分析聊天记录 ChatBot -> RecommendationSystem: 生成推荐列表 RecommendationSystem -> ChatBot: 返回推荐列表 ChatBot -> User: 显示推荐列表 @enduml ``` ## 状态图 - 状态逻辑描述 ``` 初始状态:用户未进行点击。 分析数据:当用户点击生成推荐时,系统分析用户的聊天记录和用户画像。 状态转移到“分析中”。 生成推荐:系统根据分析结果生成影视剧推荐列表。 状态转移到“推荐生成中”。 展示推荐:推荐生成后,系统将推荐列表展示给用户。 状态转移到“推荐展示中”。 结束状态:用户查看推荐后,状态回到“初始状态”。 ``` ```plantuml @startuml [*] --> 初始状态 初始状态 --> 分析中 : 用户点击生成推荐 分析中 --> 推荐生成中 : 分析完成 推荐生成中 --> 推荐展示中 : 生成推荐列表 推荐展示中 --> 初始状态 : 用户查看推荐 @enduml ``` ## 活动图 - 活动逻辑描述 ``` 开始:用户与 AI 陪聊助手开始互动。 获取聊天记录:系统获取用户的聊天信息。 获取用户画像:系统获取用户的画像信息。 分析数据:系统分析聊天记录和用户画像,以了解用户偏好。 生成推荐:系统基于分析结果生成影视剧推荐列表。 展示推荐:系统将生成的推荐列表展示给用户。 结束:用户查看推荐后,活动结束。 ``` ```plantuml @startuml start :开始推荐; :获取用户的聊天信息; :获取用户画像信息; :分析聊天记录和用户画像; :生成影视剧推荐列表; :展示推荐列表给用户; stop @enduml ``` # AI陪聊助手模块 - 用户选择AI陪聊搭子,它可以根据影视剧的剧情与用户进行流畅、自然的对话交流,为用户提供个性化的影视剧解读,并保存数据。 - 用户可以选择不同角色的智能体互动,塑造不同角色的智能体与用户聊天,并保存数据。 ## 时序图 - AI追剧搭子 业务逻辑描述 - 用户启动对话:用户通过应用程序启动AI陪聊助手,进入AI追剧搭子的陪聊模块。 - 对话初始化:AI追剧搭子根据设定的背景,生成初始对话内容并发送给用户。 - 用户输入:用户输入自己的问题或评论,AI追剧搭子接收并解析用户的输入。 - 对话生成:AI追剧搭子根据用户的输入和影视剧剧情,生成适当的回复,并考虑剧情相关性。 - 回复发送:AI追剧搭子将生成的回复发送给用户,继续维持对话。 - 循环对话:用户和AI追剧搭子之间的对话可以持续进行,直到用户选择结束对话。 - 对话结束:用户选择结束对话,AI追剧搭子记录对话信息,并提供总结或推荐其他角色/影视剧。 ```plantuml @startuml actor User participant "AI追剧搭子" as AI User -> AI : 启动陪聊模块 AI -> AI : 加载背景信息 AI -> User : 生成初始对话内容 User -> AI : 输入问题/评论 AI -> AI : 解析用户输入 AI -> AI : 生成AI追剧搭子回复 AI -> User : 发送AI追剧搭子回复 User -> AI : 输入问题/评论 AI -> AI : 解析用户输入 AI -> AI : 生成AI追剧搭子回复 AI -> User : 发送AI追剧搭子回复 User -> AI : 结束对话 AI -> AI : 记录对话信息 AI -> User : 提供总结/推荐 @enduml ``` - 角色互动 业务逻辑描述 - 用户启动对话:用户通过应用程序启动AI陪聊助手,进入陪聊模块。 - 角色选择:用户选择希望与之互动的角色,AI助手根据选择加载该角色的背景和剧情信息。 - 对话初始化:AI助手根据所选角色的特点和剧情背景,生成初始对话内容并发送给用户。 - 用户输入:用户输入自己的问题或评论,AI助手接收并解析用户的输入。 - 对话生成:AI助手根据用户的输入和影视剧剧情,生成适当的回复,并考虑剧情相关性。 - 回复发送:AI助手将生成的回复发送给用户,继续维持对话。 - 循环对话:用户和AI助手之间的对话可以持续进行,直到用户选择结束对话。 - 对话结束:用户选择结束对话,AI助手记录对话信息。 ```plantuml @startuml actor User participant "角色" as AI User -> AI : 启动陪聊模块 User -> AI : 选择角色互动功能 AI -> User : 显示角色选择 User -> AI : 选择角色 AI -> AI : 加载角色信息 AI -> User : 生成初始对话内容 User -> AI : 输入问题/评论 AI -> AI : 解析用户输入 AI -> AI : 生成角色回复 AI -> User : 发送角色回复 User -> AI : 输入问题/评论 AI -> AI : 解析用户输入 AI -> AI : 生成角色回复 AI -> User : 发送角色回复 User -> AI : 结束对话 AI -> AI : 记录对话信息 @enduml ``` ## 状态图 - 状态逻辑描述 - AI助手陪聊模块可以分为以下几个主要状态: ``` 初始状态:用户未启动陪聊模块。 选择影视剧状态:用户启动陪聊模块后,进入AI陪聊助手选择界面。 选择AI追剧搭子:用户选择一个追剧搭子。 选择角色状态(可选):用户选择影视剧后,可以选择希望与之互动的角色。 对话进行中状态:用户进行选择后,进入与角色或AI追剧搭子的对话状态。 结束对话状态:用户选择结束对话,AI助手记录相关信息并提供总结。 ``` - 状态之间的转换逻辑如下: ``` 从初始状态到选择角色状态:用户选择角色。 从选择影视剧状态到对话进行中状态:用户选择不选择角色,直接进入对话。 从选择角色状态到对话进行中状态:用户选择角色。 从对话进行中状态到对话进行中状态:用户输入问题或评论,AI助手生成回复。 从对话进行中状态到结束对话状态:用户选择结束对话。 从结束对话状态到初始状态:对话结束后,用户返回初始状态。 ``` ```plantuml @startuml [*] --> 初始状态 初始状态 --> 选择角色状态 : 角色对话 初始状态 --> 选择AI追剧搭子状态 : 搭子陪聊 选择AI追剧搭子状态 --> 对话进行中状态 : 选择搭子 选择角色状态 --> 对话进行中状态 : 选择角色 对话进行中状态 --> 对话进行中状态 : 输入问题/评论 对话进行中状态 --> 结束对话状态 : 结束对话 结束对话状态 --> [*] : 返回初始状态 @enduml ``` ## 活动图 - 活动逻辑描述 ``` 开始:用户进入 AI 陪聊助手模块。 选择AI陪聊搭子:用户选择一个AI陪聊搭子或角色。 开始对话:系统根据用户选择的角色启动对话。 流畅交流:AI 陪聊助手根据影视剧的剧情与用户进行自然的对话交流。 提供个性化解读:系统为用户提供个性化的影视剧解读。 保存数据:系统在对话过程中记录用户的选择和对话内容。 结束对话:用户选择结束对话,系统保存最终的数据记录。 结束:流程结束。 ``` ```plantuml @startuml start :用户进入AI陪聊助手模块; :选择AI陪聊搭子或角色; :开始对话; :AI助手根据剧情进行自然对话; :提供个性化的影视剧解读; :保存对话数据; :用户选择结束对话; :保存最终的数据记录; stop @enduml ``` # 社区模块 - 系统显示热门话题讨论区:系统展示当前热门的讨论话题和帖子,用户可以选择感兴趣的内容进行发帖,点赞,评论。 - 用户选择发布帖子/评论:用户选择在讨论区发布自己的观点、经验或问题,对自己感兴趣的帖子进行评论,表达自己的看法。 - 用户输入帖子/评论内容:用户在输入框中撰写帖子/评论内容,表达自己的想法。 - 用户提交帖子/评论:用户点击提交按钮,发送帖/评论子到系统。 - 系统记录用户的发帖/评论记录:在个人中心页面提供点赞记录查询功能,方便用户查看自己的发帖/评论行为。 - 系统更新社区的发帖/评论内容:在讨论区中显示新的帖子/评论。 - 用户选择点赞帖子:用户对感兴趣的帖子或评论进行点赞 - 系统更新点赞数并记录该用户的点赞记录:系统更新相应帖子或评论的点赞数量,在并保存用户点赞的行为,在个人中心页面提供点赞记录查询功能,方便用户查看自己的点赞行为。 ## 时序图 - 业务逻辑描述 - 用户进入社区模块:用户通过应用程序进入社区模块。 - 用户选择发布帖子/评论:用户选择在讨论区发布自己的观点、经验或问题,或对自己感兴趣的帖子进行评论,表达自己的看法。 - 用户输入帖子/评论内容:用户在输入框中撰写帖子或评论内容,表达自己的想法。 - 用户提交帖子/评论:用户点击提交按钮,发送帖子或评论到系统。 - 系统将数据保存到数据库。 - 系统显示用户用户帖子/评论。 - 结束:流程结束。 ```plantuml @startuml actor User participant "社区模块" as CommunityModule participant "数据库" as Database User -> CommunityModule: 进入社区模块 User -> CommunityModule: 选择发布帖子/评论 User -> CommunityModule: 输入帖子/评论内容 User -> CommunityModule: 提交帖子/评论 CommunityModule -> Database: 保存帖子/评论数据 Database -> CommunityModule: 确认保存 CommunityModule -> User: 显示用户帖子/评论 User -> CommunityModule: 结束 @enduml ``` ## 状态图 - 状态逻辑描述 ``` 初始状态:用户未进入社区模块。 社区模块状态:用户进入社区模块。 选择发布状态:用户选择发布帖子或评论。 输入内容状态:用户在输入框中撰写帖子或评论内容。 提交状态:用户点击提交按钮,发送帖子或评论到系统。 数据保存状态:系统将数据保存到数据库。 显示状态:系统显示用户的帖子或评论。 结束状态:用户查看帖子或评论,流程结束。 ``` ```plantuml @startuml [*] --> 初始状态 初始状态 --> 社区模块状态 : 用户进入社区模块 社区模块状态 --> 选择发布状态 : 用户选择发布帖子/评论 选择发布状态 --> 输入内容状态 : 用户输入帖子/评论内容 输入内容状态 --> 提交状态 : 用户提交帖子/评论 提交状态 --> 数据保存状态 : 系统将数据保存到数据库 数据保存状态 --> 显示状态 : 系统显示用户帖子/评论 显示状态 --> 结束状态 : 用户查看帖子/评论 结束状态 --> 初始状态 : 流程结束 @enduml ``` ## 活动图 - 活动逻辑描述 ``` 开始:用户进入社区模块。 选择发布帖子/评论:用户选择在讨论区发布自己的观点、经验或问题,或对感兴趣的帖子进行评论。 输入内容:用户在输入框中撰写帖子或评论内容。 提交内容:用户点击提交按钮,发送帖子或评论到系统。 保存数据:系统将数据保存到数据库。 显示内容:系统显示用户的帖子或评论。 结束:流程结束。 ``` ```plantuml @startuml start :用户进入社区模块; :选择发布帖子/评论; :用户输入帖子/评论内容; :用户提交帖子/评论; :系统将数据保存到数据库; :系统显示用户的帖子/评论; stop @enduml ```