Files
jiang13-forum/docs/rebuild-spec/02-features.md
freefire f10ba99012 feat: SSR 帖子修订历史列表与快照
作者与管理员可查看编辑前版本,帖详情增加修订入口。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-29 22:28:04 +08:00

9.5 KiB
Raw Blame History

02 · 功能清单(验收级)

读者:实现与验收
前置01-product.md
交叉05-business-rules.md06-pages-ux.md
源码对照[frontend/src/App.tsx]((仅 mainfrontend/src/App.tsx)、router/router.goREADME.md

用复选框做验收;重构完成时应全部可勾选(或书面声明砍掉的功能)。


A. 浏览与布局

  • 三栏布局:左导航 / 中 Feed / 右栏小组件 — SSR桌面≤900px 隐藏右栏)
  • 浅色 / 暗色主题;跟随系统偏好并本地记忆
  • 响应式:平板/手机收起侧栏
  • 长列表虚拟滚动或等价流畅方案
  • Feed 排序:latest(最新发帖)/ reply(最新回复)/ hot(热门)
  • 板块筛选:全部 + 单板块
  • 列表样式可配:title | excerpt | thumbnail
  • 搜索:关键词、标签、作者、仅标题(title_only)— SSR Feed 面板(/ / /board/:id
  • 右栏:热门帖、标签云、最新评论、最新用户、友链(可开关排序)— SSR 热门固定 + aside_widgetsAdmin /admin/settings 侧栏组件编辑器
  • 登录用户右栏/侧边:签到与抽奖入口 — SSR 右栏条(钱包详情仍在 /profile#wallet
  • 下拉刷新(移动端)
  • 可选伪静态:/post/123.html 等形式(后缀后台可配)
  • 404 页

B. 认证与个人中心

  • 注册(用户名、密码、昵称、邮箱;可选邮箱验证码)— SSR /register
  • 图形验证码接口(注册流程)— SSR 注册页强制;GET /api/captcha + POST /api/register 校验
  • 登录 / 登出opaque session Cookie jiang13_session)— SSRSameSite=Lax登出/禁言/改密吊销
  • 忘记密码:邮箱验证码 + 重置 — SSR /forgot-password(依赖 SMTP 就绪)
  • 注册配置:邮件就绪时强制验证码;安装后开放注册(不依赖 SMTP
  • 首个用户自动成为管理员 → 改为仅 /install 创建管理员
  • 个人中心:改昵称、签名、密码、上传头像、积分钱包/签到/抽奖 — SSR /profile(裁剪未做)
  • 个人活动统计:帖数、评数、收藏数、获赞 — /profile + /user/:id
  • 公开用户主页 /user/:id(无邮箱)
  • 禁言用户无法使用需登录写接口(中间件 + compose 门控)

C. 板块

  • 列出板块(含帖数等展示字段)— SSR /boards + 侧栏 + Admin
  • 管理员:创建 / 改 / 删板块 — SSR /admin/boards
  • 板块名称、描述、图标、色板索引、排序
  • 默认板块保障(空站可引导创建)

D. 帖子(通用)

  • 发帖:选板块、标题、标签、正文 — SSR /composenormal
  • 正文图片上传 — /compose/upload + Markdown 插入
  • TipTap 富文本能力(见 06-pages-ux.md 编辑器节)— 本分支改用 Markdown textarea 渐进增强
  • Markdown 编辑模式(与富文本互转/双模)
  • 编辑帖子(时限、锁帖约束)— SSR /post/:id/edit
  • 删除帖子 → 软删进回收站 — SSR Admin帖详情 + /admin/trash
  • 修订历史列表与单条详情(可做 diff— SSR /post/:id/revisions(作者/管理员;无 diff
  • 点赞切换;收藏切换;收藏列表 — SSR /favorites
  • 浏览量 — 详情页计数
  • 举报帖子 — SSR 表单 + /admin/reports
  • 内容审核状态展示(作者可见待审/被拒)

D.1 帖子类型

  • normal 普通讨论
  • question 问答:可标记已解决 / 未解决
  • poll 投票210 选项;单选/多选;可选截止时间;投票;作者可结束
  • bounty 悬赏:发帖托管积分;采纳评论发奖;可退款(规则见 05
  • lottery 抽奖帖:设定中奖人数;从评论参与者开奖

D.2 运营标记(管理员)

  • 全局置顶 / 取消 — SSR 帖详情
  • 版内置顶 / 取消(仅板块列表抬升)— SSR 帖详情
  • 精华 / 取消 — SSR 帖详情
  • 禁止编辑edit lock— SSR 帖详情
  • 禁止评论 / 结贴comments lock— SSR 帖详情
  • 审核通过 / 拒绝(拒绝可通知作者)— SSR /admin/moderation
  • 回收站:恢复 / 彻底删除 — SSR /admin/trash

E. 内容门控

  • 编辑器可插入「登录可见」块 — compose 工具栏
  • 编辑器可插入「回复可见」块 — compose 工具栏
  • 编辑器可插入「积分可见」块(可设价格)— compose 工具栏 + prompt
  • 未登录:遮盖 members-only 与 reply-only 正文,保留长度提示 — 锁定壳 UI
  • 已登录未回复:遮盖 reply-only作者与管理员始终可见
  • 积分块:未解锁遮盖;POST /post/:id/unlock 扣积分并返回 inner HTML
  • 搜索 / SEO 出口对门控内容做红action不泄露正文既有

F. 评论

  • 按帖拉取评论列表(楼层、引用目标)— SSR 帖详情;扁平列表 + reply_to 展示(嵌套树 UI 未做)
  • 发表评论(登录);支持 reply_to、私密评论 — POST /post/:id/comments
  • 游客评论(公开接口可写,字段 guest_*
  • 编辑评论(时限);删除评论 — SSR 帖详情入口 + /comments/:cid/edit|delete;作者软删进回收站
  • 评论点赞 — POST /post/:id/comments/:cid/like
  • 评论举报 — SSR
  • @ 提及 → 通知 — SSR 发评/审通调用 NotifyCommentMentions
  • 回复提醒(站内信 + 可选邮件)— SSR 发评/审通调用 NotifyCommentPublished
  • 审核中 / 被拒评论可见性规则
  • 管理员:通过 / 拒绝待审评论 — SSR /admin/moderation(回收站/修订未迁)

G. 私信与通知

  • 会话列表(含系统会话 peer=0— SSR /messages
  • 会话消息(分页 / before 游标)— SSR /messages/with/:peerId
  • 发送私信 — 表单 PRG用户主页「发私信」入口
  • 未读数(可分私信 / 通知)— 列表分项 + 导航角标
  • 标记会话已读 / 通知已读 / 全部已读 — 打开会话自动已读;全部标已读
  • 系统通知种类:system / reject / report_result / reply / mention / moderation 等(写入已有;/messages/with/0?kind= 筛选)

H. 积分、签到、抽奖、徽章、等级

  • 积分流水查询 — SSR /profile 钱包近 N 条
  • 每日签到:基础 5连签每日 +1封顶 15 — POST /profile/checkin
  • 每日抽奖奖池加权0/2/5/10/20成本 0 — POST /profile/lottery
  • 积分解锁分成:读者付全额,作者约 70% — 门控 unlock 服务
  • 短龄同 IP 互刷拒绝分成
  • Exp → 等级 Lv110
  • 自动徽章(注册天数 / 获赞 / 创作分成)
  • 限定徽章:管理员定义与授予/撤销
  • 管理员调整积分、设定等级

I. 友链

  • 前台友链页;导航/页脚入口可配 — SSR /linksnav_show_friend_links / footer_show_friend_links
  • 用户申请名称、URL、Logo、是否上首页、回链页POST /links/apply
  • Logo 上传 — 表单 multipart 或 POST /links/logo
  • 我的申请列表;取消待审 — /links(修改待审:取消后重提)
  • 管理员审核:通过 / 拒绝 — SSR /admin/friend-links(复检按钮未迁;创建时可异步检测)
  • 管理员维护品牌友链列表 — /admin/friend-links 增删

J. 站点单页

  • 公开:/page/:slug 列表入口nav/footer— SSR
  • 管理员 CRUD发布开关排序nav/footer 展示开关 — SSR /admin/pages

K. Gitea 码桶(后置

本迭代不做产品化同步:不启后台定时任务、不挂管理入口。表结构与 settings 键可保留兼容。

  • 后置后台开关、Base URL、Token、同步间隔
  • (后置)手动同步 + 后台定时同步
  • (后置)前台 /projects 列表与搜索

L. OIDC Provider

  • Discovery、JWKS、Authorize、Token、UserInfo、Logout
  • 多 OAuth 客户端 CRUD密钥哈希存储PKCE 字段支持
  • groups claim 映射 admin/user 组

M. 媒体与存储

  • 本地 uploads 或 S3 兼容存储(可热切换配置)
  • 头像 / 帖图 / 站点品牌资源分类
  • 图片展示可选 WebP 转换(/media/thumb/...
  • 管理后台媒体列表与删除
  • 媒体索引表同步

N. 管理后台其它

  • 仪表盘:用户/帖/板块计数 + 待审帖/评 + 待处理举报 — SSR /admin/dashboard
  • 敏感词:forum_settings.filter_words 读写 + 热更 — SSR /admin/settings
  • 基础限流post/comment/register/login/window— SSR完整 Limits 字数等未迁
  • SMTP 配置与测试信 — SSR /admin/settings 邮件区
  • 站点品牌文案名称、标语、简介、keywords、Logo 字标、ICP — SSRLogo/Favicon/OG 上传未迁)
  • SQLite 一键备份与下载

O. 基础设施

  • GET /health
  • robots.txt / sitemap.xml
  • 静态上传文件可达
  • 限流:发帖、评论、注册、登录、举报、私信、友链等

明确不在当前规格内(计划中可后做)

摘自 ROADMAP.md不是现网必交验收项:

  • 通知动态 UX 大幅优化
  • 帖子搜索增强(组合筛选更强)

若新站一并实现,可作为加分项,不阻塞「功能对等」验收。