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

84 lines
5.5 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.

# 需求文档
## 简介
帖子回复权限设置功能允许发帖人控制其帖子是否允许其他用户回复。发帖人可以在创建帖子时设置回复权限,也可以在帖子发布后通过帖子详情页修改该设置。当帖子被设置为不允许回复时,详情页的评论输入框将显示为灰色不可点击状态,并提示「不可回复」。
## 术语表
- **System**: 团播机构系统LiveForum包含小程序端和后台管理端
- **Post_Author**: 帖子的发布者(发帖人)
- **User**: 小程序端的普通用户,包括发帖人和非发帖人
- **Post**: 帖子,用户发布的内容,存储在 T_Posts 表中
- **Reply_Permission**: 回复权限,帖子的一个属性,控制该帖子是否允许其他用户发表评论/回复
- **Post_Detail_Page**: 帖子详情页post-details-page展示帖子内容和评论列表的页面
- **Post_Page**: 发帖页面post-page用户创建新帖子的页面
- **More_Menu**: 帖子详情页右上角的「……」按钮弹出的操作菜单
- **Reply_Setting_Popup**: 帖子内回复设置弹窗,居中 dialog 样式,包含「允许帖子内回复」和「不允许帖子内回复」两个按钮选项
- **Comment_Input**: 帖子详情页底部的评论输入区域
## 需求
### 需求 1发帖时设置回复权限
**用户故事:** 作为 Post_Author我希望在创建帖子时设置是否允许回复以便控制帖子的互动方式。
#### 验收标准
1. THE Post_Page SHALL 在图片上传区域下方显示一个圆形复选框checkbox文案为「允许帖子内回复」
2. THE Post_Page SHALL 默认将该复选框设置为未选中状态(即默认不允许回复)
3. WHEN Post_Author 勾选「允许帖子内回复」复选框, THE System SHALL 将回复权限标记为允许回复
4. WHEN Post_Author 点击发布按钮, THE System SHALL 将回复权限设置随帖子内容一起提交到服务端
5. WHEN 帖子发布成功, THE System SHALL 将回复权限状态持久化到 Post 记录中
### 需求 2发帖后修改回复权限
**用户故事:** 作为 Post_Author我希望在帖子发布后修改回复权限设置以便根据实际情况调整帖子的互动方式。
#### 验收标准
1. WHILE User 为该帖子的 Post_Author, THE Post_Detail_Page SHALL 在右上角显示「……」按钮
2. WHEN Post_Author 点击「……」按钮, THE System SHALL 从底部弹出 action sheet 样式的 More_Menu
3. THE More_Menu SHALL 依次显示三个选项:「帖子内回复设置」、「举报」、「取消」
4. WHEN Post_Author 点击「取消」, THE System SHALL 关闭 More_Menu
5. WHEN Post_Author 点击「帖子内回复设置」, THE System SHALL 关闭 More_Menu 并在页面中央弹出 Reply_Setting_Popup居中 dialog 样式)
6. THE Reply_Setting_Popup SHALL 显示标题「帖子内回复设置」,以及两个按钮选项:「允许帖子内回复」和「不允许帖子内回复」
7. THE Reply_Setting_Popup SHALL 以蓝色填充+白色文字样式高亮当前选中的状态,未选中的选项以白色背景+描边样式显示
8. WHEN Post_Author 点击与当前状态不同的选项, THE System SHALL 将变更提交到服务端并更新本地状态
9. WHEN 回复权限修改成功, THE System SHALL 关闭 Reply_Setting_Popup 并立即在 Post_Detail_Page 上反映新的回复状态
### 需求 3不允许回复时的展示
**用户故事:** 作为 User我希望在帖子不允许回复时能清楚地看到提示以便了解当前帖子的回复状态。
#### 验收标准
1. WHILE Post 的 Reply_Permission 为不允许回复, THE Comment_Input SHALL 固定显示在页面底部,整体为灰色背景
2. WHILE Post 的 Reply_Permission 为不允许回复, THE Comment_Input SHALL 显示灰色提示文字「不可回复」
3. WHILE Post 的 Reply_Permission 为不允许回复, THE Comment_Input SHALL 处于不可点击状态
4. WHILE Post 的 Reply_Permission 为不允许回复, WHEN User 尝试点击 Comment_Input, THE System SHALL 不响应点击事件且不弹出评论输入弹窗
5. WHILE Post 的 Reply_Permission 为不允许回复, THE Post_Detail_Page SHALL 仍然正常显示已有的评论列表
### 需求 4回复权限的后端存储与接口
**用户故事:** 作为 System我需要在后端正确存储和提供回复权限数据以便前端能够正确展示和修改回复权限。
#### 验收标准
1. THE System SHALL 在 T_Posts 表中新增布尔类型字段存储回复权限,默认值为允许回复
2. WHEN 发布帖子接口收到请求, THE System SHALL 将请求中的回复权限参数持久化到数据库
3. WHEN 获取帖子详情接口收到请求, THE System SHALL 在响应中返回帖子的回复权限状态
4. THE System SHALL 提供修改帖子回复权限的 API 接口
5. WHEN 修改回复权限接口收到请求, THE System SHALL 验证请求用户为该帖子的 Post_Author
6. IF 非 Post_Author 用户尝试修改回复权限, THEN THE System SHALL 返回权限不足的错误信息
### 需求 5回复权限对评论操作的约束
**用户故事:** 作为 System我需要在后端强制执行回复权限约束以防止在不允许回复的帖子下发表评论。
#### 验收标准
1. WHEN 发表评论接口收到请求, THE System SHALL 检查目标帖子的回复权限状态
2. IF 目标帖子的 Reply_Permission 为不允许回复, THEN THE System SHALL 拒绝评论请求并返回「该帖子不允许回复」的错误信息
3. WHILE Post 的 Reply_Permission 为允许回复, THE System SHALL 正常处理评论请求