docs+feat: 重构规格与 Gitea 式 SSR 骨架(首页)

在 rebuild/gitea-ssr 落地产品规格、Cursor 规则,以及 Go 模板 SSR 首页/板块列表;未迁移路径仍回落 SPA,便于对照 main。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-29 03:11:25 +08:00
parent 4dc3bbb13f
commit 1414c71dec
28 changed files with 2891 additions and 24 deletions

View File

@@ -0,0 +1,211 @@
# 02 · 功能清单(验收级)
> **读者**:实现与验收
> **前置**[01-product.md](01-product.md)
> **交叉**[05-business-rules.md](05-business-rules.md)、[06-pages-ux.md](06-pages-ux.md)
> **源码对照**[`frontend/src/App.tsx`](../../frontend/src/App.tsx)、[`router/router.go`](../../router/router.go)、[`README.md`](../../README.md)
用复选框做验收;重构完成时应全部可勾选(或书面声明砍掉的功能)。
---
## A. 浏览与布局
- [ ] 三栏布局:左导航 / 中 Feed / 右栏小组件
- [ ] 浅色 / 暗色主题;跟随系统偏好并本地记忆
- [ ] 响应式:平板/手机收起侧栏
- [ ] 长列表虚拟滚动或等价流畅方案
- [ ] Feed 排序:`latest`(最新发帖)/ `reply`(最新回复)/ `hot`(热门)
- [ ] 板块筛选:全部 + 单板块
- [ ] 列表样式可配:`title` | `excerpt` | `thumbnail`
- [ ] 搜索:关键词、标签、作者、仅标题(`title_only`
- [ ] 右栏:热门帖、标签云、最新评论、最新用户、友链(可开关排序)
- [ ] 登录用户右栏/侧边:签到与抽奖入口
- [ ] 下拉刷新(移动端)
- [ ] 可选伪静态:`/post/123.html` 等形式(后缀后台可配)
- [ ] 404 页
---
## B. 认证与个人中心
- [ ] 注册(用户名、密码、昵称、邮箱;可选邮箱验证码)
- [ ] 图形验证码接口(注册流程)
- [ ] 登录 / 登出(会话 Cookie
- [ ] 忘记密码:邮箱验证码 + 重置
- [ ] 注册配置接口:是否首用户、邮件是否就绪、是否开放注册
- [ ] 首个用户自动成为管理员
- [ ] 个人中心:改昵称、签名、密码、上传头像(可裁剪)
- [ ] 个人活动统计:帖数、评数、收藏数、获赞
- [ ] 公开用户主页 `/user/:id`(无邮箱)
- [ ] 禁言用户无法使用需登录写接口
---
## C. 板块
- [ ] 列出板块(含帖数等展示字段)
- [ ] 管理员:创建 / 改 / 删板块
- [ ] 板块名称、描述、图标、色板索引、排序
- [ ] 默认板块保障(空站可引导创建)
---
## D. 帖子(通用)
- [ ] 发帖:选板块、标题、标签、正文
- [ ] 正文图片上传
- [ ] TipTap 富文本能力(见 [06-pages-ux.md](06-pages-ux.md) 编辑器节)
- [ ] Markdown 编辑模式(与富文本互转/双模)
- [ ] 编辑帖子(时限、锁帖约束)
- [ ] 删除帖子 → 软删进回收站
- [ ] 修订历史列表与单条详情(可做 diff
- [ ] 点赞切换;收藏切换;收藏列表页
- [ ] 浏览量(可 `skip_view=1` 跳过计数)
- [ ] 举报帖子
- [ ] 内容审核状态展示(作者可见待审/被拒)
### D.1 帖子类型
- [ ] `normal` 普通讨论
- [ ] `question` 问答:可标记已解决 / 未解决
- [ ] `poll` 投票210 选项;单选/多选;可选截止时间;投票;作者可结束
- [ ] `bounty` 悬赏:发帖托管积分;采纳评论发奖;可退款(规则见 05
- [ ] `lottery` 抽奖帖:设定中奖人数;从评论参与者开奖
### D.2 运营标记(管理员)
- [ ] 全局置顶 / 取消
- [ ] 版内置顶 / 取消(仅板块列表抬升)
- [ ] 精华 / 取消
- [ ] 禁止编辑edit lock
- [ ] 禁止评论 / 结贴comments lock
- [ ] 审核通过 / 拒绝(拒绝可通知作者)
- [ ] 回收站:恢复 / 彻底删除
---
## E. 内容门控
- [ ] 编辑器可插入「登录可见」块
- [ ] 编辑器可插入「回复可见」块
- [ ] 编辑器可插入「积分可见」块(可设价格)
- [ ] 未登录:遮盖 members-only 与 reply-only 正文,保留长度提示
- [ ] 已登录未回复:遮盖 reply-only作者与管理员始终可见
- [ ] 积分块:未解锁遮盖;`POST .../unlock` 扣积分并返回 inner HTML
- [ ] 搜索 / SEO 出口对门控内容做红action不泄露正文
---
## F. 评论
- [ ] 按帖拉取评论列表(楼层、嵌套父级、引用目标)
- [ ] 发表评论(登录);支持 `reply_to`、私密评论
- [ ] 游客评论(公开接口可写,字段 guest_*
- [ ] 编辑评论(时限);删除评论
- [ ] 评论点赞
- [ ] 评论举报
- [ ] @ 提及 → 通知
- [ ] 回复提醒(站内信 + 可选邮件)
- [ ] 审核中 / 被拒评论可见性规则
- [ ] 管理员:通过 / 拒绝 / 回收站 / 查看评论修订
---
## G. 私信与通知
- [ ] 会话列表(含系统会话 peer=0
- [ ] 会话消息(分页 / before 游标)
- [ ] 发送私信
- [ ] 未读数(可分私信 / 通知)
- [ ] 标记会话已读 / 通知已读 / 全部已读
- [ ] 系统通知种类:`system` / `reject` / `report_result` / `reply` / `mention` / `moderation`
---
## H. 积分、签到、抽奖、徽章、等级
- [ ] 积分流水查询
- [ ] 每日签到:基础 5连签每日 +1封顶 15
- [ ] 每日抽奖奖池加权0/2/5/10/20成本 0
- [ ] 积分解锁分成:读者付全额,作者约 70%
- [ ] 短龄同 IP 互刷拒绝分成
- [ ] Exp → 等级 Lv110
- [ ] 自动徽章(注册天数 / 获赞 / 创作分成)
- [ ] 限定徽章:管理员定义与授予/撤销
- [ ] 管理员调整积分、设定等级
---
## I. 友链
- [ ] 前台友链页;导航/页脚入口可配
- [ ] 用户申请名称、URL、Logo、是否上首页、回链页
- [ ] Logo 上传
- [ ] 我的申请列表;修改待审申请;取消
- [ ] 管理员审核:通过 / 拒绝 / 重新检测回链
- [ ] 管理员维护品牌友链列表(设置里 JSON
---
## J. 站点单页
- [ ] 公开:`/page/:slug` 列表入口nav/footer
- [ ] 管理员 CRUD发布开关排序nav/footer 展示开关
---
## K. Gitea 码桶
- [ ] 后台开关、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. 管理后台其它
- [ ] 仪表盘:计数 + 待审帖/评/举报/友链 + 最近帖
- [ ] 敏感词文件读写
- [ ] 论坛限流与字数等 Limits
- [ ] SMTP 配置与测试信
- [ ] 站点品牌名称、标语、简介、keywords、Logo、Favicon、OG 图、ICP
- [ ] SQLite 一键备份与下载
---
## O. 基础设施
- [ ] `GET /health`
- [ ] `robots.txt` / `sitemap.xml`
- [ ] 静态上传文件可达
- [ ] 限流:发帖、评论、注册、登录、举报、私信、友链等
---
## 明确不在当前规格内(计划中可后做)
摘自 [`ROADMAP.md`](../../ROADMAP.md)**不是**现网必交验收项:
- 通知动态 UX 大幅优化
- 帖子搜索增强(组合筛选更强)
若新站一并实现,可作为加分项,不阻塞「功能对等」验收。