92 lines
6.4 KiB
Markdown
92 lines
6.4 KiB
Markdown
# 需求文档
|
||
|
||
## 简介
|
||
|
||
发帖和回复时间间隔功能允许管理员在后台管理端根据不同的 SK 认证等级,分别配置发帖和回复帖子的最小时间间隔。同一用户在上次发帖或回复后,必须等待对应认证等级所设定的时间间隔后才能再次操作。前端和后端均需进行间隔校验,前端在倒计时结束前禁用操作按钮并显示剩余秒数,后端在接口层拦截不满足间隔要求的请求。
|
||
|
||
## 术语表
|
||
|
||
- **System**: 团播机构系统(LiveForum),包含小程序端、后台管理端和后端 API
|
||
- **Admin_Panel**: 后台管理端(ZR.Vue),管理员用于配置系统参数的 Web 管理界面
|
||
- **User**: 小程序端用户,拥有特定的认证等级
|
||
- **Certification_Type**: 认证等级,存储在 T_CertificationTypes 表中,如粉丝认证、SK 主播认证、管理员认证等
|
||
- **Post_Interval**: 发帖时间间隔,同一用户两次发帖之间的最小等待时间(单位:秒)
|
||
- **Reply_Interval**: 回复时间间隔,同一用户两次回复之间的最小等待时间(单位:秒)
|
||
- **Interval_Config**: 时间间隔配置记录,关联 Certification_Type,包含 Post_Interval 和 Reply_Interval 两个字段
|
||
- **Remaining_Time**: 剩余等待时间,用户距离下次可操作的倒计时秒数
|
||
- **Post_Page**: 发帖页面(post-page),用户创建新帖子的页面
|
||
- **Post_Detail_Page**: 帖子详情页(post-details-page),用户查看帖子内容和发表评论的页面
|
||
- **Comment_Input**: 帖子详情页底部的评论输入区域
|
||
|
||
## 需求
|
||
|
||
### 需求 1:后台管理端配置时间间隔
|
||
|
||
**用户故事:** 作为后台管理员,我希望按认证等级分别设置发帖和回复的时间间隔,以便对不同等级的用户实施差异化的频率控制。
|
||
|
||
#### 验收标准
|
||
|
||
1. THE Admin_Panel SHALL 提供时间间隔配置页面,以列表形式展示所有 Certification_Type 对应的 Interval_Config
|
||
2. THE Admin_Panel SHALL 为每条 Interval_Config 显示认证等级名称、Post_Interval(秒)和 Reply_Interval(秒)三个字段
|
||
3. WHEN 管理员修改某条 Interval_Config 的 Post_Interval 或 Reply_Interval 并保存, THE System SHALL 将配置持久化到数据库
|
||
4. THE System SHALL 将 Post_Interval 和 Reply_Interval 的最小值限制为 0(0 表示无间隔限制)
|
||
5. WHEN 新增 Certification_Type 且未配置 Interval_Config 时, THE System SHALL 使用默认值 0 秒作为 Post_Interval 和 Reply_Interval
|
||
|
||
### 需求 2:后端发帖间隔校验
|
||
|
||
**用户故事:** 作为 System,我需要在发帖接口中校验用户的发帖时间间隔,以防止用户在间隔时间内重复发帖。
|
||
|
||
#### 验收标准
|
||
|
||
1. WHEN PublishPosts 接口收到发帖请求, THE System SHALL 查询该 User 的 Certification_Type 对应的 Post_Interval 配置
|
||
2. WHEN PublishPosts 接口收到发帖请求, THE System SHALL 查询该 User 最近一次成功发帖的时间
|
||
3. IF 当前时间与 User 最近一次发帖时间的差值小于 Post_Interval, THEN THE System SHALL 拒绝请求并返回包含 Remaining_Time 的错误信息
|
||
4. WHILE Post_Interval 配置为 0, THE System SHALL 不对该 Certification_Type 的 User 执行发帖间隔校验
|
||
5. IF User 未关联任何 Certification_Type, THEN THE System SHALL 使用默认间隔值 0 秒(即不限制)
|
||
|
||
### 需求 3:后端回复间隔校验
|
||
|
||
**用户故事:** 作为 System,我需要在回复接口中校验用户的回复时间间隔,以防止用户在间隔时间内重复回复。
|
||
|
||
#### 验收标准
|
||
|
||
1. WHEN PublishPostComments 接口收到回复请求, THE System SHALL 查询该 User 的 Certification_Type 对应的 Reply_Interval 配置
|
||
2. WHEN PublishPostComments 接口收到回复请求, THE System SHALL 查询该 User 最近一次成功回复的时间
|
||
3. IF 当前时间与 User 最近一次回复时间的差值小于 Reply_Interval, THEN THE System SHALL 拒绝请求并返回包含 Remaining_Time 的错误信息
|
||
4. WHILE Reply_Interval 配置为 0, THE System SHALL 不对该 Certification_Type 的 User 执行回复间隔校验
|
||
5. IF User 未关联任何 Certification_Type, THEN THE System SHALL 使用默认间隔值 0 秒(即不限制)
|
||
|
||
### 需求 4:前端发帖间隔提示与拦截
|
||
|
||
**用户故事:** 作为 User,我希望在发帖间隔未满足时看到明确的倒计时提示,以便了解何时可以再次发帖。
|
||
|
||
#### 验收标准
|
||
|
||
1. WHEN User 成功发帖后, THE Post_Page SHALL 根据后端返回的间隔配置启动本地倒计时
|
||
2. WHILE 发帖倒计时未结束, THE Post_Page SHALL 将发布按钮设置为禁用状态并显示剩余秒数
|
||
3. WHEN 发帖倒计时结束, THE Post_Page SHALL 恢复发布按钮为可用状态
|
||
4. IF User 在倒计时期间尝试发帖且后端返回间隔错误, THEN THE System SHALL 弹出系统提示显示剩余等待秒数并更新本地倒计时
|
||
|
||
### 需求 5:前端回复间隔提示与拦截
|
||
|
||
**用户故事:** 作为 User,我希望在回复间隔未满足时看到明确的倒计时提示,以便了解何时可以再次回复。
|
||
|
||
#### 验收标准
|
||
|
||
1. WHEN User 成功回复后, THE Post_Detail_Page SHALL 根据后端返回的间隔配置启动本地倒计时
|
||
2. WHILE 回复倒计时未结束, THE Comment_Input SHALL 显示剩余秒数提示文字并处于不可提交状态
|
||
3. WHEN 回复倒计时结束, THE Comment_Input SHALL 恢复为正常可输入可提交状态
|
||
4. IF User 在倒计时期间尝试回复且后端返回间隔错误, THEN THE System SHALL 弹出系统提示显示剩余等待秒数并更新本地倒计时
|
||
|
||
### 需求 6:间隔配置的后端存储与查询接口
|
||
|
||
**用户故事:** 作为 System,我需要提供间隔配置的存储和查询能力,以支持后台管理端的配置操作和前后端的间隔校验。
|
||
|
||
#### 验收标准
|
||
|
||
1. THE System SHALL 在数据库中创建时间间隔配置表,关联 Certification_Type 的 Id,包含 Post_Interval 和 Reply_Interval 字段(整数类型,单位秒,默认值 0)
|
||
2. THE System SHALL 提供查询所有 Certification_Type 对应 Interval_Config 列表的管理端 API 接口
|
||
3. THE System SHALL 提供新增或修改 Interval_Config 的管理端 API 接口
|
||
4. WHEN 小程序端调用 GetAppConfig 接口时, THE System SHALL 在响应中返回当前 User 的 Certification_Type 对应的 Post_Interval 和 Reply_Interval 值
|
||
5. IF 查询的 Certification_Type 未配置 Interval_Config, THEN THE System SHALL 返回默认值 0 秒
|