live-forum/.kiro/specs/post-reply-interval/requirements.md
2026-03-24 11:27:37 +08:00

92 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 需求文档
## 简介
发帖和回复时间间隔功能允许管理员在后台管理端根据不同的 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 的最小值限制为 00 表示无间隔限制)
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 秒