# 01 · 产品定位与模块地图

> **读者**：重构架构师 / 产品对齐  
> **前置**：[README.md](README.md)  
> **后续**：[02-features.md](02-features.md)  
> **源码**：[docs/introduction.md](../introduction.md)、[README.md](../../README.md)

---

## 1. 定位

姜十三论坛不做大而全公网社区，只服务「几人到几百人」的内部交流：

| 场景 | 说明 |
|------|------|
| 团队 / 工作室 | 需求讨论、进度同步、知识沉淀 |
| 兴趣小圈子 | 同好交流、作品分享、活动组织 |
| 项目配套社区 | 可与 Gitea 通过 OIDC（开放身份连接）做 SSO（单点登录） |
| 个人站长 | 希望数据自管、部署简单 |

**产品口号气质**：能聊 · 好看 · 好装（部署简单）。

**规模预期**：非百万用户级；信息密度接近 V2EX / NGA 一类，而非大留白营销站。

---

## 2. 产品 vs 运维（拆开看待）

| 维度 | 当前实现 | 重构时 |
|------|----------|--------|
| **产品** | 论坛功能全集（见模块地图） | **必须对齐**功能与规则 |
| **运维** | 单二进制 + Env 引导 + SQLite/PG/MySQL + `forum_settings` 热更 | **本分支已落地**；无 `app.ini` |

规格文档把「用户能做什么」写死；把「怎么打包发布」放在 [07-config-ops.md](07-config-ops.md) 供参考。

---

## 3. 角色模型

| 角色 | 识别 | 能力摘要 |
|------|------|----------|
| **游客** | 未登录 | 浏览公开内容；可发表游客评论（需昵称等）；门控内容按规则遮盖 |
| **登录用户** | JWT Cookie 有效且未禁言 | 发帖、评论、点赞收藏、私信、签到抽奖、友链申请、举报等 |
| **认证用户** | `user.verified = true` | 与管理员一样：**发帖/评论免审**（`SkipsModeration`） |
| **管理员** | `role = admin` | 全部后台能力；免审；看待审/被拒内容 |
| **系统** | 私信 `from_user_id = 0` | 发系统通知（审核、回复提醒、举报结果等） |

**引导规则**：站点**第一个注册用户自动成为管理员**（无安装向导单独建管步骤）。

禁言用户（`banned`）：带鉴权的写接口被拒绝；浏览策略以实现为准，前端通常视为不可正常互动。

---

## 4. 模块地图

```mermaid
flowchart TB
  subgraph core [核心社区]
    auth[认证与账号]
    board[板块]
    feed[Feed与搜索]
    post[帖子与特殊类型]
    comment[评论]
    gate[内容门控]
  end
  subgraph social [社交]
    like[点赞收藏]
    msg[私信与通知]
    profile[用户主页]
    report[举报]
  end
  subgraph economy [经济与成长]
    points[积分钱包]
    checkin[签到抽奖]
    badge[徽章]
    level[等级Exp]
  end
  subgraph site [站点扩展]
    page[自定义单页]
    links[友情链接]
    gitea[Gitea码桶]
    brand[品牌与SEO]
  end
  subgraph admin [管理与集成]
    mod[审核回收站]
    settings[系统设置]
    oidc[OIDC Provider]
    storage[本地或S3存储]
    mail[SMTP邮件]
  end
  auth --> feed
  board --> feed
  feed --> post
  post --> comment
  post --> gate
  post --> like
  comment --> msg
  points --> gate
  points --> checkin
  auth --> oidc
  settings --> mail
  settings --> storage
```

### 4.1 认证与账号

- 注册 / 登录 / 登出；可选邮箱验证码；忘记密码重置
- 图形验证码（注册场景）
- 个人资料：昵称、签名、头像、改密
- 邮件未配置时可能关闭公开注册（见业务规则）

### 4.2 板块与 Feed

- 多板块；图标与色板；排序
- 首页「全部」+ `/board/:id`
- 排序：最新发帖 / 最新回复 / 热门
- 搜索：关键词、标签、作者、仅标题
- 列表样式：仅标题 / 摘要 / 缩略图（后台可配）

### 4.3 帖子

- 富文本正文（HTML，TipTap 产出）+ 可选 Markdown 编辑面
- 标签、修订历史与 diff
- 五种类型：`normal` | `question` | `poll` | `bounty` | `lottery`
- 运营标记：全局置顶、版内置顶、精华、禁止编辑、禁止评论
- 审核状态：`pending` | `published` | `rejected`；软删回收站

### 4.4 内容门控

正文内嵌自定义标签（非独立表行，存在 `posts.content` HTML 中）：

| 标签 | 含义 |
|------|------|
| `<members-only>` | 登录可见 |
| `<reply-only>` | 本帖已回复可见 |
| `<points-only data-cost="N">` | 积分解锁；按块计费 |

### 4.5 评论

- 楼层号；回复指定楼；嵌套展示；引用；@ 提及
- 游客评论字段；私密评论（仅相关人可见）
- 点赞、编辑时限、审核、软删

### 4.6 积分经济与成长

- **Points**：可消费积分（签到、抽奖、解锁、悬赏托管等）
- **Exp**：不可消费经验 → 等级 Lv1–10
- **CreatorIncomeTotal**：创作分成累计（徽章指标）
- 徽章：自动（门槛）+ 限定（管理员发放）

### 4.7 私信与通知

统一走 `private_messages` 表，用 `kind` 区分用户私信与系统事件。

### 4.8 友链与站点页

- 管理员维护品牌友链 JSON；用户申请审核（可选回链检测）
- 自定义单页（关于、版规等）：slug、发布、导航/页脚展示

### 4.9 Gitea 开源码桶

后台配置后定时同步公开仓库到 `gitea_repos`，前台 `/projects` 展示。

### 4.10 OIDC Provider

本站作为 IdP：Discovery / Authorize / Token / UserInfo / Logout / JWKS；多 OAuth 客户端。

### 4.11 管理后台

仪表盘、板块、单页、友链、帖/评、举报、用户、徽章、媒体、系统设置、SQLite 备份。

### 4.12 SEO / 发现

`robots.txt`、`sitemap.xml`、Open Graph / Twitter / JSON-LD；当前另有爬虫 HTML。新站应用 SSR 统一，但 **meta 字段集合应保留**（见 [07-config-ops.md](07-config-ops.md)）。

---

## 5. 权限一句话

- **读公开内容**：人人可（含游客）  
- **写内容**：登录（部分评论允许游客）  
- **审与运营**：管理员  
- **免审写**：管理员或 `verified`  

细节状态机见 [05-business-rules.md](05-business-rules.md)。
