feat: SSR 内容门控与积分钱包/签到抽奖

闭合积分解锁经济闭环:锁定壳与 unlock,以及 profile 钱包流水与每日签到/抽奖 PRG。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-29 06:20:12 +08:00
parent 40ec20b3df
commit 204e7fdb32
20 changed files with 818 additions and 107 deletions

View File

@@ -20,7 +20,7 @@
- [ ] 列表样式可配:`title` | `excerpt` | `thumbnail`
- [ ] 搜索:关键词、标签、作者、仅标题(`title_only`
- [ ] 右栏:热门帖、标签云、最新评论、最新用户、友链(可开关排序)
- [ ] 登录用户右栏/侧边:签到与抽奖入口
- [ ] 登录用户右栏/侧边:签到与抽奖入口(入口暂在 `/profile` 钱包区)
- [ ] 下拉刷新(移动端)
- [ ] 可选伪静态:`/post/123.html` 等形式(后缀后台可配)
- [x] 404 页
@@ -35,7 +35,7 @@
- [ ] 忘记密码:邮箱验证码 + 重置
- [x] 注册配置:邮件就绪时强制验证码;安装后开放注册(不依赖 SMTP
- [x] ~~首个用户自动成为管理员~~ → 改为仅 `/install` 创建管理员
- [x] 个人中心:改昵称、签名、密码、上传头像 — SSR `/profile`(裁剪未做)
- [x] 个人中心:改昵称、签名、密码、上传头像、积分钱包/签到/抽奖 — SSR `/profile`(裁剪未做)
- [x] 个人活动统计:帖数、评数、收藏数、获赞 — `/profile` + `/user/:id`
- [x] 公开用户主页 `/user/:id`(无邮箱)
- [x] 禁言用户无法使用需登录写接口(中间件 + compose 门控)
@@ -87,13 +87,13 @@
## E. 内容门控
- [ ] 编辑器可插入「登录可见」块
- [ ] 编辑器可插入「回复可见」块
- [ ] 编辑器可插入「积分可见」块(可设价格)
- [ ] 未登录:遮盖 members-only 与 reply-only 正文,保留长度提示
- [ ] 已登录未回复:遮盖 reply-only作者与管理员始终可见
- [ ] 积分块:未解锁遮盖;`POST .../unlock` 扣积分并返回 inner HTML
- [ ] 搜索 / SEO 出口对门控内容做红action不泄露正文
- [x] 编辑器可插入「登录可见」块 — compose 工具栏
- [x] 编辑器可插入「回复可见」块 — compose 工具栏
- [x] 编辑器可插入「积分可见」块(可设价格)— compose 工具栏 + prompt
- [x] 未登录:遮盖 members-only 与 reply-only 正文,保留长度提示 — 锁定壳 UI
- [x] 已登录未回复:遮盖 reply-only作者与管理员始终可见
- [x] 积分块:未解锁遮盖;`POST /post/:id/unlock` 扣积分并返回 inner HTML
- [x] 搜索 / SEO 出口对门控内容做红action不泄露正文(既有)
---
@@ -125,10 +125,10 @@
## H. 积分、签到、抽奖、徽章、等级
- [ ] 积分流水查询
- [ ] 每日签到:基础 5连签每日 +1封顶 15
- [ ] 每日抽奖奖池加权0/2/5/10/20成本 0
- [ ] 积分解锁分成:读者付全额,作者约 70%
- [x] 积分流水查询 — SSR `/profile` 钱包近 N 条
- [x] 每日签到:基础 5连签每日 +1封顶 15`POST /profile/checkin`
- [x] 每日抽奖奖池加权0/2/5/10/20成本 0`POST /profile/lottery`
- [x] 积分解锁分成:读者付全额,作者约 70% — 门控 unlock 服务
- [ ] 短龄同 IP 互刷拒绝分成
- [ ] Exp → 等级 Lv110
- [ ] 自动徽章(注册天数 / 获赞 / 创作分成)

View File

@@ -27,7 +27,7 @@
| `/` | Feed | 已迁 |
| `/board/:id` | 板块 Feed | 已迁 |
| `/post/:id` | 帖详情 + 评论/赞/藏 | 已迁 |
| `/compose` | 发帖normalMarkdown textarea + 图片上传 | 已迁 |
| `/compose` | 发帖normaltextarea + 图片 + 门控插入 | 已迁 |
| `/post/:id/edit` | 编辑帖 | 已迁 |
| `/profile` | 个人中心(资料/密码/头像;无钱包/裁剪) | 已迁 |
| `/user/:id` | 公开用户页 | 已迁 |
@@ -137,7 +137,7 @@
| 模块 | 行为 |
|------|------|
| 门控块 | 锁定态显示长度/价格;解锁按钮调 API 后替换 inner HTML |
| 门控块 | 锁定壳 UI长度/价格/引导);`POST /post/:id/unlock` 返回 inner HTML 后替换 |
| 投票卡 | 选选项提交;显示百分比;作者可结束 |
| 悬赏条 | 显示积分与状态;采纳按钮在他人评论上;退款按钮按规则禁用并提示 |
| 抽奖卡 | 显示参与人数;开奖;中奖名单 |
@@ -161,7 +161,8 @@
- 资料编辑、密码、头像直传(**本迭代无裁剪器**)— SSR `/profile`
- 公开页:签名、等级/积分只读、统计、最近帖 — SSR `/user/:id`(无邮箱)
- 收藏列表 — SSR `/favorites`
- 积分钱包面板(流水、签到)、徽章展示:**未迁**
- 积分钱包面板(余额、近 N 条流水、签到/抽奖表单 PRG— SSR `/profile`;导航展示当前积分
- 徽章展示:**未迁**
---

View File

@@ -81,9 +81,10 @@ web_src/ → public/assets/
### 已迁路径(摘要)
公开写:`/install``/login``/logout``/register``/compose``/post/:id/edit`、帖详情评论/赞/藏。
公开写:`/install``/login``/logout``/register``/compose`(含门控插入)`/post/:id/edit`、帖详情评论/赞/藏、积分解锁 `POST /post/:id/unlock`
个人闭环:`/profile`(昵称/签名/密码/头像)、`/user/:id``/favorites`
个人闭环:`/profile`(昵称/签名/密码/头像、积分钱包/签到/抽奖)、`/user/:id``/favorites`
`POST /profile/checkin``POST /profile/lottery`CSRF + PRG
私信:`/messages``/messages/with/:peerId`(系统 peer=0 只读;打开会话标已读)。