Files
system-design/IT服务平台/ICT服务平台/技术支持与论坛.md
T
jiahong e303bb868a 更新
2026-03-22 15:19:22 +08:00

31 KiB
Raw Blame History

技术支持与论坛 — 规划设计及实施方案

一、概述

1.1 目标

基于 ICT 服务平台 统一认证底座(OpenLDAP + Keycloak)和互联网应用服务器基础设施,构建面向客户、经销商与合作伙伴的互动社区论坛平台,覆盖技术支持、产品反馈、用户建议、营销互动的完整场景。论坛与 文档生产及输出管理 系统深度协同,共同构成企业对外知识服务与客户运营体系。

1.2 核心设计原则

  • 全栈开源:论坛引擎(Discourse)、LLM 推理(Ollama + Qwen2.5)、RAG 编排(LangChain)、向量检索(pgvector)、文本嵌入(bge-large-zh)全部采用开源方案,零 API 费用
  • 认证复用:登录用户接入 Keycloak SSO 免密码秘钥登录;游客免登录可浏览公开栏目
  • AI 驱动:基于开源大模型本地部署,帖子自动分类、智能回复草稿生成、内容合规检测,人工审核后发布,数据全程不出企业服务器
  • 主题订阅:用户自主选择关注的主题,信息流仅展示已关注内容,类似微信群的「入群 / 退群」机制
  • 积分激励:通过积分奖励体系拉动社区活跃度与用户留存
  • 管控有序:分级审核机制,管理员可对不雅或不相关主题实施警告、冻结、关停

1.3 用户角色

论坛在 ICT 平台已有角色(游客 / 访客 / 读者 / 管理员)基础上定义论坛专属角色:

角色 说明 典型场景
游客 (Guest) 免登录浏览公开栏目,不可发帖 搜索引擎入口、链接分享打开阅读
普通用户 (Member) 注册并登录后参与论坛互动 发帖、跟帖、点赞、关注主题、积累积分
经销商 (Dealer) 经过企业认证的经销商账号 创建专属主题、发布产品服务信息、管理自有主题
版主 (Moderator) 被管理员任命管理特定栏目或主题 置顶、移帖、警告、关闭话题
客服 (Support) 企业客服团队成员 审核 AI 回复草稿、人工解答、处理投诉
管理员 (Admin) 论坛系统管理员 栏目管理、主题审批、用户封禁、积分规则配置

1.4 论坛层级结构

论坛内容采用四级层级组织,对应企业网站上的导航结构:

栏目 (Category) ─── 网站顶部导航,如"技术支持""吐槽""建议"
  └─ 主题 (Theme) ─── 类似微信群的持续讨论空间,如"智能笔连接问题"
       └─ 话题帖 (Topic) ─── 某个具体问题或讨论,如"BLE 连接超时怎么办"
            └─ 跟帖 (Reply) ─── 对话题帖的回复,支持多级引用
  • 栏目是企业预设的固定分类,对应网站的一级导航栏目
  • 主题是栏目下的持续讨论空间,用户可关注或取消关注,类似加入或退出微信群
  • 话题帖是主题内的具体讨论,每个话题帖有独立 URL 可链接分享
  • 跟帖是话题帖内的交互回复,支持引用、@提及、Markdown 格式

二、系统架构

2.1 整体架构图

@startuml
skinparam componentStyle rectangle
title 技术支持与论坛 - 系统架构

actor "游客" as Guest
actor "用户/经销商" as User
actor "客服/管理员" as Admin

node "互联网应用服务器\n(腾讯云/阿里云)" as AppServer {
  component "Discourse\n论坛引擎" as Forum
  component "ForumAI\nAI 回复服务" as AI
  component "Keycloak\nSSO 认证" as KC
  component "MsgHub\n消息中心" as MsgHub
  component "Umami\n统计分析" as Analytics
  component "Nginx + SSL" as Nginx
  database "Redis\n缓存/会话" as Redis
}

node "私有云 [数据后端]" as PCloud {
  database "PostgreSQL\nAI草稿/积分/审核" as DB
  database "OpenLDAP\n用户目录" as LDAP
}

node "LLM 推理节点\n(Ollama + Qwen2.5)" as LLM

Guest -down-> Nginx : HTTPS 浏览
User -down-> Nginx : HTTPS 互动
Admin -down-> Nginx : 管理后台

Nginx -down-> Forum : 论坛请求
Nginx -down-> KC : 认证
Forum -right-> AI : Webhook\n新帖事件
AI -right-> LLM : 生成回复草稿
AI -down-> DB : 草稿/审核队列
AI -left-> Forum : API 发布回复
Forum -down-> MsgHub : 论坛通知
Forum -down-> Analytics : 访问埋点
Forum -down-> Redis : 会话/缓存
KC -down-> LDAP : 用户认证
MsgHub -down-> DB : 消息存储
@enduml

2.2 核心组件清单

组件 开源方案 用途 许可证
论坛引擎 Discourse 帖子发布、主题管理、搜索、信任等级 GPL v2
AI 回复服务 ForumAINode.js + LangChain 帖子分析、回复草稿生成、FAQ 匹配、RAG 检索 MIT (LangChain)
LLM 本地推理 Ollama + Qwen2.5 中文理解、回复生成、情感分析,全部本地部署 MIT / Apache 2.0
文本嵌入 bge-large-zh-v1.5BAAI 中文 EmbeddingFAQ 语义匹配 MIT
向量存储 pgvectorPostgreSQL 扩展) FAQ 向量索引与余弦相似度检索 PostgreSQL
认证中心 Keycloak(已有) OIDC SSO 统一登录 Apache 2.0
消息推送 MsgHub(已有) 论坛事件实时通知
统计分析 Umami(已有) 论坛页面访问与互动数据 MIT
缓存 Redis(已有) 会话管理、积分缓存、限流 BSD
数据存储 PostgreSQL(已有) ForumAI 草稿、积分记录、审核日志 PostgreSQL
反向代理 Nginx(已有) SSL 终止、路由分发 BSD

全栈开源:上述所有组件均为开源方案,LLM 推理通过 Ollama 本地部署 Qwen2.5 模型,无需依赖任何付费 API,数据全程不出企业服务器。Discourse Docker 镜像内含独立的 PostgreSQL 和 RedisForumAI 使用平台共享的 PostgreSQL + pgvector 存储 AI 草稿、积分和向量数据。


三、论坛栏目与主题体系

3.1 预设栏目

企业网站上的论坛以栏目形式呈现,每个栏目是一个独立的一级导航入口:

栏目 URL 标识 访问级别 说明
技术支持 technical-support public 产品使用问题、故障排查、技术咨询,AI 优先回复
产品反馈 product-feedback public 用户吐槽、使用体验、Bug 报告
建议与需求 suggestions public 功能建议、需求提案,支持投票表决
公告 announcements public 企业官方公告、版本发布、活动通知(仅管理员可发帖)
经销商专区 dealer-zone login 经销商专属讨论,需认证后可见
自由讨论 general login 注册用户自由交流

3.2 主题定义与管理

每个栏目下包含多个主题(Theme,主题是围绕特定产品、功能或客户群体的持续讨论空间:

属性 说明 示例
名称 主题的显示名称 "Qink 智能笔使用交流"
标识 URL 友好的英文标识 qink-smart-pen
所属栏目 挂载在哪个栏目下 技术支持
创建者 企业预设 / 用户申请 / 经销商自建 admin / dealer-001
描述 主题简介,显示在主题列表 "关于 Qink 智能笔的连接、使用、固件问题"
图标 主题头像或 Logo 产品图片
状态 正常 / 警告中 / 已停止 / 已归档 正常
关注人数 当前关注该主题的用户数 1,234

预设主题示例

栏目 主题 说明
技术支持 智能笔连接问题 BLE 配对、固件升级、连接不稳定
技术支持 大屏显示与同步 笔迹同步延迟、画面适配、多设备场景
技术支持 手写识别与 OCR 识别准确率、语言支持、特殊字符
产品反馈 Qink 使用体验 Qink 系列产品的综合体验反馈
产品反馈 iTone 音质讨论 iTone 系列音频产品体验
建议与需求 功能投票箱 用户对新功能的提案与投票

3.3 用户与经销商自建主题

普通用户和经销商可申请创建自己的主题,系统提供完整支撑:

创建流程

用户/经销商提交"创建主题"申请
  │
  ├─ 填写:主题名称、所属栏目、描述、创建理由
  │
  ├─ 系统自动检查:
  │    ├─ 名称是否与已有主题重复
  │    ├─ 内容是否包含违禁词
  │    └─ 用户信任等级是否满足要求
  │
  ├─ 经销商账号 → 自动通过(免审核)
  │
  └─ 普通用户 → 进入管理员审核队列
       ├─ 审核通过 → 主题创建,申请者自动成为该主题版主
       └─ 审核拒绝 → 通知申请者并说明原因

自建主题权限

角色 创建主题 免审核 管理自有主题 删除自有主题
普通用户(等级 3+ 可申请 可(版主权限) 需管理员确认
经销商 可直接创建 可(版主权限)
管理员 可直接创建 全部主题

3.4 主题关注与信息流

用户通过关注(Follow)机制管理自己可见的内容,类似微信群的加入与退出:

操作 效果
关注主题 该主题下的新话题帖出现在用户信息流中;新帖通知推送到消息中心
取消关注 该主题内容从信息流消失;停止该主题的消息推送
未关注 用户不会看到该主题下的任何内容(栏目页仍可看到主题列表)

信息流规则

  • 论坛首页(个人信息流)仅展示已关注主题下的话题帖,按最新回复时间倒序排列
  • 栏目页展示该栏目下所有主题列表(含未关注的),用户可浏览并决定是否关注
  • 新注册用户自动关注企业预设的「推荐主题」(如技术支持 / 公告),后续可自行调整
  • 每个主题卡片显示:主题名称、描述、关注人数、最新活跃时间、「关注 / 已关注」按钮

四、帖子交互与链接分享

4.1 帖子发布与跟帖

发布话题帖

登录用户在已关注的主题内可发布话题帖:

字段 说明
标题 话题帖标题,简洁描述问题或主题
正文 支持 Markdown 格式,可嵌入图片、代码块、表格
标签 可选,便于检索分类(如 BLE 固件 Android
附件 支持上传图片、日志文件(大小 / 类型受限)

跟帖(回复)

  • 对话题帖的回复支持 Markdown 格式
  • 支持引用回复(引用某条跟帖后回复)
  • 支持 @提及 其他用户,触发专属通知
  • 支持点赞,高赞回复自动置顶或标记为「有帮助」
  • 帖子作者可将某条回复标记为最佳回答(技术支持栏目尤为重要)

4.2 链接分享体系

每个论坛页面均有独立的、可分享的 URL:

页面 URL 格式 示例
论坛首页 https://forum.writech.cn/
栏目页 https://forum.writech.cn/c/{栏目标识} forum.writech.cn/c/technical-support
主题页 https://forum.writech.cn/c/{栏目}/{主题} forum.writech.cn/c/technical-support/qink-smart-pen
话题帖 https://forum.writech.cn/t/{标题slug}/{帖子ID} forum.writech.cn/t/ble-timeout/456
特定跟帖 https://forum.writech.cn/t/{slug}/{ID}/{跟帖序号} forum.writech.cn/t/ble-timeout/456/3

分享能力

  • 每个话题帖页面提供分享按钮,支持复制链接、生成二维码
  • 分享链接携带渠道追踪参数(复用 PromoAPI 的 ch / cmp 参数体系)
  • 链接在微信、浏览器等平台打开时展示完整的帖子内容
  • 游客通过分享链接可直接阅读公开栏目下的帖子,无需登录

4.3 SEO 与社交分享优化

  • Discourse 原生支持 SSR(服务端渲染),搜索引擎可抓取论坛内容
  • 每个话题帖生成 Open Graph 元标签,分享到微信 / 微博时展示标题 + 摘要 + 缩略图
  • 技术支持类帖子沉淀为搜索引擎可索引的知识库,持续引流

五、AI 辅助回复系统(ForumAI)

5.1 设计理念

ForumAI 是论坛的 AI 后端服务,核心目标是降低客服团队工作量,同时保证回复质量:

  • AI 先行:每条新帖自动生成回复草稿,客服只需审核确认或微调
  • 人工兜底:AI 无法处理的复杂问题自动转交人工,确保每条帖子都有回应
  • 知识积累:FAQ 库随帖子积累不断丰富,AI 回复准确率持续提升
  • 透明标记:AI 回复标记「AI 助手」标签,用户知晓回复来源

5.2 工作流程

@startuml
skinparam componentStyle rectangle
title ForumAI 工作流程

start
:用户发布话题帖或跟帖;
:Discourse Webhook 推送到 ForumAI;

:ForumAI 分析帖子内容;
note right
  意图识别: 提问 / 反馈 / 建议 / 投诉
  情感分析: 正面 / 中性 / 负面
  关键词提取: 产品 / 功能 / 问题
end note

if (匹配 FAQ 知识库 ?) then (是)
  :生成标准回复草稿;
  note right: 附上 FAQ 文档链接
else (否)
  :调用 LLM 生成回复草稿;
  note right
    Ollama + Qwen2.5 (本地部署)
    LangChain RAG: 产品知识 + 帖子上下文
  end note
endif

:草稿存入审核队列;

if (AI 置信度高且为常见问题 ?) then (是)
  :自动发布回复;
  note right: 标注 "AI 助手" 标签
else (否)
  :推送到客服审核队列;
  :客服查看/编辑草稿;
  :客服确认发布;
endif

:回复发布到论坛;
:MsgHub 通知帖子作者;
stop
@enduml

5.3 AI 能力矩阵

能力 说明 实现方式
意图识别 判断帖子是提问、反馈、建议还是投诉 LLM 分类 + 规则引擎
情感分析 检测用户情绪(正面 / 中性 / 负面 / 愤怒) LLM 情感评分
FAQ 匹配 将帖子与已有 FAQ 知识库进行语义匹配 bge-large-zh Embedding + pgvector 余弦相似度检索
回复生成 基于产品知识库和帖子上下文生成回复草稿 LangChain RAGOllama + Qwen2.5 + pgvector
内容审核 检测帖子是否含不良内容、广告、违禁词 Qwen2.5 审核 + 关键词过滤
智能分类 自动为帖子打标签、分配到合适的主题 LLM 分类
优先级评估 根据情感和紧急程度评估帖子优先级 规则引擎 + LLM

5.4 人工辅佐审核机制

客服团队通过审核后台管理 AI 生成的回复草稿:

┌──────────────────────────────────────────────────┐
│  ForumAI 审核后台                          客服  │
├──────────────────────────────────────────────────┤
│  待审核 (12)  │  已发布 (89)  │  已驳回 (3)     │
├──────────────────────────────────────────────────┤
│  🔴 [紧急] BLE 连接频繁断开              3分钟前  │
│     AI 草稿:建议重新配对,详见固件升级指南...     │
│     置信度:87%  │  意图:提问  │  情感:负面     │
│     [✅ 发布] [✏️ 编辑后发布] [❌ 驳回] [👤 转人工] │
├──────────────────────────────────────────────────┤
│  🟡 [一般] Qink 能否支持 Windows 手写输入   1小时前 │
│     AI 草稿:目前 Qink 主要支持 Android/iOS...   │
│     置信度:72%  │  意图:提问  │  情感:中性     │
│     [✅ 发布] [✏️ 编辑后发布] [❌ 驳回] [👤 转人工] │
└──────────────────────────────────────────────────┘

审核流程规则

场景 处理方式
AI 置信度 > 90% 且为 FAQ 匹配 自动发布,标记「AI 助手」
AI 置信度 70-90% 进入客服审核队列,客服确认或修改后发布
AI 置信度 < 70% 标记「需人工回复」,客服从头撰写
情感为「愤怒」或「投诉」 无论置信度均进入人工处理,标记高优先级

5.5 技术实现

ForumAI (Node.js 服务,端口 3005)
  ├─ Express.js            — HTTP 接收 Discourse Webhook (MIT)
  ├─ @discourseconnect     — Discourse REST API 客户端
  ├─ LangChain.js          — RAG 编排:串联 LLM + 向量检索 + Prompt (MIT)
  ├─ Ollama Client         — 调用本地 Ollama 推理 Qwen2.5HTTP localhost:11434
  ├─ pg + pgvector         — 草稿/审核写入 PostgreSQLFAQ Embedding 向量检索
  ├─ ioredis               — 限流、FAQ 缓存 (MIT)
  └─ MsgHub Client         — 审核通知推送

FAQ 知识库管理

  • FAQ 条目以 Markdown 存储于 Git 仓库,通过 DocForge 同步更新
  • 每条 FAQ 通过 bge-large-zh-v1.5BAAI 开源,MIT)生成 1024 维 Embedding 向量,存入 PostgreSQLpgvector 扩展)
  • 新帖到达时,ForumAI 通过 LangChain RAG 流程计算帖子 Embedding 并与 FAQ 库做余弦相似度检索
  • 匹配度 > 0.85 视为 FAQ 命中,直接引用对应回复模板
  • LLM 推理全部通过 OllamaMIT)本地运行 Qwen2.5(Apache 2.0)模型,无需外部 API 依赖

六、积分奖励体系

6.1 积分获取规则

通过积分奖励拉动论坛活跃度,积分规则涵盖日常互动和内容贡献:

行为 积分 频次限制 说明
每日首次登录 +5 每日 1 次 连续签到额外奖励
发布话题帖 +10 每日 5 帖 鼓励提问和分享
发表跟帖 +3 每日 20 条 鼓励参与讨论
被点赞(每个赞) +2 无限制 鼓励高质量回复
回复被标记为「最佳回答」 +50 无限制 重奖有价值的回答
关注新主题 +1 每日 3 次 鼓励探索更多主题
邀请新用户注册 +30 每月 10 次 拉新奖励
连续签到 7 天 +20 每周 1 次 额外奖励
连续签到 30 天 +100 每月 1 次 月度奖励
举报违规内容(查实后) +10 无限制 鼓励社区自治

6.2 用户等级体系

积分累计决定用户等级,不同等级解锁不同特权:

等级 名称 累计积分 特权
Lv.0 新手 0 浏览、跟帖(需审核)
Lv.1 活跃用户 50+ 跟帖免审核、点赞
Lv.2 贡献者 200+ 发帖免审核、上传附件
Lv.3 达人 500+ 申请创建主题、编辑自己的帖子标签
Lv.4 专家 2000+ 编辑他人帖子标签、参与社区管理投票
Lv.5 社区大使 5000+ 自建主题免审核、推荐至首页热门

6.3 积分兑换

积分可用于兑换企业提供的奖励:

兑换项目 所需积分 说明
品牌周边(贴纸、明信片) 100 邮寄至用户地址
产品优惠券(满减 / 折扣) 300 在官网或经销商处使用
新品试用资格 500 优先体验未发布产品
专属客服通道 1000 一对一技术支持
年度社区贡献者荣誉 年底评选,非积分兑换

6.4 营销活动积分

管理员可配置限时积分活动以拉动特定时段的社区活跃度:

活动类型 示例 积分规则
签到翻倍周 每年特定周 所有签到积分 x2
话题悬赏 "分享你的智能笔使用场景" 参与发帖 +30,最佳帖 +200
邀新冲刺 月度邀新活动 邀请积分 x3,邀新排行额外奖励
节日专题 教师节、开学季 特定话题帖积分加成

积分核心逻辑基于 Discourse 开源插件 discourse-gamification(MIT)实现用户等级和徽章展示,ForumAI 负责自定义积分规则计算和营销活动积分加成。活动规则通过管理后台配置,ForumAI 自动识别活动期间的帖子并按活动规则计算积分。


七、内容审核与管控

7.1 三级审核机制

论坛内容审核采用 AI 自动审核 + 版主审核 + 管理员终审的三级机制:

审核级别 执行者 处理内容 响应时间
一级:AI 自动审核 ForumAI 新帖/跟帖自动扫描:违禁词、广告、不良内容、灌水 即时(< 3 秒)
二级:版主审核 版主 AI 标记为可疑的内容、用户举报的内容 < 30 分钟
三级:管理员终审 管理员 主题创建审批、用户封禁、重大争议裁决 < 24 小时

7.2 管理员操作工具

管理员和版主可对帖子和主题执行以下操作:

操作 适用对象 说明
置顶 话题帖 在主题内或栏目内置顶显示
锁定 话题帖 禁止新跟帖,保留可阅读
移动 话题帖 将帖子移至更合适的主题或栏目
合并 话题帖 将重复的帖子合并为一个
隐藏 帖子/跟帖 从公开视图隐藏,仅管理员可见
删除 帖子/跟帖 永久删除内容(需三级管理员确认)
警告 用户 向用户发送违规警告通知,记录在案
禁言 用户 暂时禁止用户发帖和跟帖(可设期限)
封禁 用户 永久禁止用户访问论坛

7.3 AI 自动审核

ForumAI 对每条新发布的帖子和跟帖执行自动审核:

检测项 检测方式 处理动作
违禁词 关键词词典匹配 拦截,进入版主审核队列
广告推销 LLM 分类 + URL 检测 拦截,标记为疑似广告
人身攻击 / 不雅内容 LLM 毒性检测 拦截,自动隐藏 + 通知版主
灌水 / 重复发帖 频率检测 + 内容相似度 限流,超过阈值自动拦截
敏感信息 正则匹配(手机号、身份证等) 自动打码,提醒用户修改

7.4 主题状态管理

主题具有完整的生命周期,管理员可根据主题表现进行状态管控:

@startuml
skinparam componentStyle rectangle
title 主题状态管理

state "申请中" as Pending
state "正常" as Active
state "警告中" as Warning
state "已停止" as Stopped
state "已归档" as Archived
state "已拒绝" as Rejected

[*] --> Pending : 用户/经销商提交申请
[*] --> Active : 管理员直接创建

Pending --> Active : 管理员审核通过
Pending --> Rejected : 管理员拒绝

Active --> Warning : 管理员发出警告\n(内容不当/偏离主题)
Warning --> Active : 整改通过
Warning --> Stopped : 未整改或再次违规

Active --> Stopped : 严重违规直接停止
Stopped --> Active : 管理员解除停止

Active --> Archived : 长期不活跃\n或管理员手动归档
Archived --> Active : 管理员重新激活
@enduml

各状态说明

状态 对用户的表现 可执行操作
申请中 仅申请者可见,显示"审核中" 等待管理员审批
正常 正常显示和互动 发帖、跟帖、关注
警告中 主题顶部显示黄色警告条,提示整改内容 可继续互动,但新帖需审核
已停止 主题页显示"该主题已被管理员停止",禁止新帖 仅可阅读历史内容
已归档 主题页显示"已归档",禁止新帖 仅可阅读历史内容
已拒绝 仅申请者收到拒绝通知 可修改后重新申请

八、权限与访问控制

8.1 论坛访问级别

论坛栏目的访问控制复用文档系统的权限模型:

级别 标识 说明
公开 public 游客可浏览帖子内容,登录后方可发帖和跟帖
需登录 login 仅登录用户可浏览和互动(如经销商专区)
受限 restricted 仅特定用户组可访问(如内部测试反馈栏目)

8.2 论坛权限矩阵

操作 游客 普通用户 经销商 版主 客服 管理员
浏览公开栏目
浏览 login 栏目
发布话题帖
发表跟帖
点赞
关注主题
创建主题 Lv.3+ 申请 直接创建 直接创建
标记最佳回答 仅自己帖子 仅自己帖子
审核帖子 所辖主题 所有 所有
管理主题状态 自有主题 所辖主题 所有
封禁用户
AI 审核后台

8.3 与认证底座的关系

层次 组件 职责
身份源 OpenLDAP(私有云) 用户账户、组织架构、角色
认证中心 Keycloak(互联网服务器) SSO 登录,签发 OIDC Token
论坛认证 Discourse SSO 对接 通过 Keycloak OIDC 实现单点登录
角色映射 ForumAI 配置 Keycloak 角色组映射到论坛角色(Member / Dealer / Support / Admin
匿名访问 Discourse 公开分类 游客无需登录即可浏览 public 级别栏目

九、消息通知与 MsgHub 集成

9.1 论坛事件接入 MsgHub

论坛产生的事件通过 Discourse Webhook 接入 MsgHub 消息中心,与文档系统的消息统一展示:

Discourse 论坛事件
  │
  ├─ Webhook → ForumAI → MsgHub
  │
  └─ MsgHub 统一推送到用户消息中心
       ├─ WebSocket 实时推送(在线用户)
       └─ 未读消息存储(离线用户)

9.2 论坛消息类型

消息类型 触发条件 消息内容
新回复 关注的话题帖收到新跟帖 "{用户}回复了你关注的《{帖子标题}》"
@提及 帖子或跟帖中 @了你 "{用户}在《{帖子标题}》中提到了你"
最佳回答 你的回复被标记为最佳回答 "你在《{帖子标题}》中的回复被选为最佳回答 (+50积分)"
AI 回复已发布 客服确认发布了 AI 回复 "你的帖子《{标题}》已收到官方回复"
主题动态 关注的主题有新话题帖 "【{主题名}】有新话题:{帖子标题}"
主题审批 你申请的主题被审批 "你申请的主题「{名称}」已通过审核"
警告通知 管理员对你发出警告 "你的帖子《{标题}》收到管理员警告"
积分变动 积分增加或兑换 "恭喜获得 50 积分(最佳回答奖励)"
等级提升 用户等级提升 "恭喜升级为 Lv.3 达人!解锁「创建主题」特权"

9.3 通知策略

策略 说明
即时推送 @提及、最佳回答、警告通知、等级提升
聚合推送 新回复、主题动态(同一主题 5 分钟内聚合为一条)
静默 用户可设置单个主题为「免打扰」,仅 @提及 时通知
摘要邮件 每日 / 每周发送论坛摘要邮件到用户邮箱(可选开启)

十、部署方案

10.1 服务部署清单

论坛相关服务在已有 ICT 平台基础上新增以下组件:

服务 部署方式 运行位置 端口 说明
Discourse 论坛引擎 Docker (官方镜像) 互联网应用服务器 4000 含内置 PostgreSQL + Redis + Sidekiq
Ollama LLM 推理 Docker (GPU 可选) 互联网应用服务器 11434 本地运行 Qwen2.5 开源大模型
ForumAI 服务 Docker (Node.js) 互联网应用服务器 3005 LangChain RAG + 积分 + 审核
PostgreSQL(已有) 原生安装 私有云 5432 ForumAI 草稿/积分/审核日志
Redis(已有) Docker 互联网应用服务器 6379 ForumAI 限流/缓存
MsgHub(已有) Docker 互联网应用服务器 3003 论坛消息通知
Keycloak(已有) Docker 互联网应用服务器 8443 SSO 认证
Nginx(已有) 原生 互联网应用服务器 443 反向代理

10.2 Nginx 路由规则

在现有 Nginx 配置中新增论坛相关路由:

# Discourse 论坛(独立子域名)
server {
    listen 443 ssl http2;
    server_name forum.writech.cn;

    ssl_certificate     /etc/ssl/certs/writech_cn.pem;
    ssl_certificate_key /etc/ssl/private/writech_cn.key;

    # 论坛所有请求代理到 Discourse
    location / {
        proxy_pass http://127.0.0.1:4000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }

    # WebSocket 支持(Discourse MessageBus
    location /message-bus/ {
        proxy_pass http://127.0.0.1:4000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# ForumAI 服务(内部调用 + Discourse Webhook
# 在主站 server 块中添加:
location /api/forum-ai/ {
    proxy_pass http://127.0.0.1:3005;
}

10.3 DNS 配置

在腾讯云 DNSPod 中新增 forum.writech.cn 子域名记录:

记录 类型 指向 DNS 平台 用途
forum.writech.cn A 腾讯云广州服务器 腾讯云 DNSPod 论坛子域名

通配符 SSL 证书(*.writech.cn)已覆盖 forum.writech.cn,无需额外证书。


十一、实施路线图

阶段 任务 预计周期
第一阶段:基础 Discourse Docker 部署、Keycloak SSO 对接 第 1-2 周
第一阶段 预设栏目和主题创建、Nginx 路由配置 第 2 周
第一阶段 基础 UI 定制(品牌配色、Logo、导航栏集成) 第 2-3 周
第二阶段:互动 主题关注与信息流功能开发 第 4 周
第二阶段 用户/经销商自建主题审批流程开发 第 4-5 周
第二阶段 MsgHub 集成(论坛事件 Webhook → 消息中心) 第 5 周
第三阶段:智能 Ollama + Qwen2.5 本地部署、bge-large-zh 嵌入模型部署 第 6 周
第三阶段 ForumAI 服务开发(Webhook + LangChain RAG 编排 + pgvector 第 6-7 周
第三阶段 FAQ 知识库构建与向量检索集成 第 7-8 周
第三阶段 AI 审核后台开发(客服审核队列 + 草稿管理) 第 8-9 周
第四阶段:运营 积分奖励体系开发(积分规则 + 等级 + 兑换) 第 10-11 周
第四阶段 内容审核与管控工具(AI 审核 + 管理员操作) 第 11 周
第四阶段 营销活动积分模块 + 运营看板 第 12 周
第五阶段:优化 SEO 优化、Open Graph 社交分享、链接分享体系完善 第 13 周
第五阶段 全链路测试、性能调优、上线 第 13-14 周