Skip to content

功能介绍

Think Site Manager 是一套企业级文档站点管理平台,用于管理基于 VitePress / VuePress 构建的文档站点,提供文章付费控制、成员权限管理和数据可视化看板。


用户与权限体系

平台采用 三级角色 + License 授权 的双层权限控制。

角色定义

角色标识权限范围
系统管理员system全平台管理,拥有所有权限
平台管理员admin管理全部站点、用户、邀请码
站点管理员site_admin创建和管理自己的站点,绑定成员
普通用户user查看被授权访问的站点链接,通过插件阅读文章

权限控制流程

提示

普通用户注册需要通过邀请码完成,确保平台封闭可控。


站点管理

核心功能

  • 站点 CRUD:创建、编辑、删除文档站点,配置站点名称、描述、URL
  • API Token:每个站点自动生成唯一 Token,供插件接口认证使用
  • 在线检测:站点在线状态实时轮询检测(ONLINE / OFFLINE / ENABLED / DISABLED
  • Token 重新生成:支持一键重新生成站点 Token

站点实体字段

字段说明
name站点名称
description站点描述
url站点访问地址
site_tokenAPI Token(UUID 格式,自动生成)
status_flag在线状态

文章管理

核心功能

  • 文章 CRUD:创建、编辑、删除站点内的文章,定义文章路径和标题
  • 付费/免费切换:每篇文章可单独标记为付费或免费
  • 批量操作:支持勾选多篇文章,一键切换付费状态
  • 构建同步:文档构建时可自动同步文章列表到平台

文章访问控制流程

访客访问文章 → 插件发起权限校验 → 免费文章直接放行
                                  → 付费文章弹出登录窗口
                                  → 用户登录后校验权限 → 放行

注意

付费文章通过 is_paid 字段标记(0=免费,1=付费),文章路径必须与文档站点路由一致。


成员绑定

将用户绑定到站点,并分配在该站点下的操作角色。

绑定角色

角色说明
ADMIN站点内的管理员,可以管理该站点的文章和成员
MEMBER站点内的普通成员,可以阅读该站点的付费文章

功能亮点

  • 穿梭框选择用户:使用 Ant Design Transfer 组件,直观地从用户列表中勾选成员
  • 角色分配:在绑定界面同时设置成员在站点中的角色
  • 去重保护:同一用户对同一站点不能重复绑定

邀请码管理

TIP

邀请码系统确保平台的封闭性,防止未授权的用户注册。

核心功能

  • 生成邀请码:设置最大使用次数和过期时间,生成 8 位随机码
  • 一键禁用:随时禁用已生成的邀请码
  • 复制邀请链接:一键复制完整注册链接(含邀请码参数),方便分享
  • 使用统计:每个邀请码记录已使用次数 / 总次数

数据看板

首页提供丰富的可视化数据看板,根据用户角色展示不同范围的数据。

概览卡片

4 个核心指标卡片:用户总数、站点总数、文章总数、在线站点数。

图表清单

图表类型数据说明
站点文章排行柱状图Top 10 站点按文章数量排序
站点状态分布饼图在线/离线/启用/禁用 占比
用户注册趋势折线图近 30 天每日注册人数
文章付费比例环图付费文章 vs 免费文章占比

角色数据范围

角色数据范围
system / admin全平台数据,4 卡片 + 4 图表
site_admin仅自己管理的站点数据
user展示绑定站点卡片列表,可点击访问

VitePress / VuePress 认证插件

平台提供即装即用的认证插件,为文档站点快速接入文章付费控制。

插件特性

  • 🔒 路由级权限校验:每次页面切换自动验证当前文章是否需要登录
  • 🎨 美观登录弹窗:与 VitePress / VuePress 主题风格统一
  • 💾 Token 持久化:登录状态存储在 localStorage,刷新后自动恢复
  • 🌐 全局 API:提供 $siteAuth 全局属性,可在任意 Vue 组件中调用

下载方式

在站点管理页面,点击对应站点的 插件下载 按钮,选择 VitePress 或 VuePress 版本即可下载 ZIP 包。


主机管理

平台把"文档站点最终部署到哪台 Linux 服务器"抽象成 Host 实体,在「主机管理」面板统一管理。SSH 凭据用 AES-256-GCM 加密存 host 表,任何明文不落盘。

核心功能

  • 主机 CRUD:录入 / 编辑 / 删除目标 Linux 主机(IP + SSH 端口 + 用户名 + 密码或私钥)
  • 连通性探测:一键 SSH 进主机,自动识别发行版(Ubuntu / CentOS / Rocky),探测 nginx 当前状态,回写 last_check_* 字段
  • 一键初始化 nginx:9 步流水线(SSH → 装包 → 启服务 → 校验 → 平台主动 HTTP 探测 → 防火墙 → 放行 → 重测),前端竖向 Stepper 实时展示,详见 一键初始化 nginx
  • Web 终端:浏览器内 xterm.js 直连主机 PTY,排查 nginx / 防火墙问题不用 ssh 堡垒机
  • 凭据加密:SSH 密码 / 私钥 / passphrase 用 THINK_HOST_CRYPTO_KEY 256 bit 主密钥 AES-256-GCM 加密,启动校验 fail-fast

主机状态机

nginx_status含义可执行操作
NOT_INSTALLED主机已加但 nginx 没装初始化
INSTALLED_ACTIVEnginx 安装 + 运行中发布站点
INSTALLED_INACTIVE已装但未运行重新初始化
INIT_FAILED上次初始化失败查看错误日志 + 重试

详见 主机管理


站点发布到主机

构建好的 VitePress / VuePress 产物,可以一键发布到「主机管理」里任何 INSTALLED_ACTIVE 的目标主机。全异步流水线,前端 SSE 实时进度 + 日志轮询。

核心功能

  • 一键发布:选站点 + 选主机 → 后端 build → SCP → 解压 → reload nginx,7 步全自动
  • 构建产物复用:已构建过的 build task 可以直接复用,跳过重新 build(节省时间)
  • 历史版本管理:每次发布独立 build task,versionNo 倒序展示,可回滚到任意历史版本
  • 实时进度:发布抽屉左侧历史列表(状态 + versionNo + 时间),右侧详情 + 实时日志框(2s 轮询 getDeployHistory,带 [HH:mm:ss] 时间戳)
  • Web 终端排查:点击终端按钮直接进主机 shell,看 deploy 错误 / nginx error log
  • 回滚:用历史的 buildTaskUnCode 重新触发 deploy,新 history 标 ROLLED_BACK,旧 history log 追加审计记录
  • 跨平台中文文件名:tar.gz 走 Commons Compress TarArchiveOutputStream("UTF-8") + pax header,任何版本 GNU tar 都能正确解码;旧 .zip 产物走 unzip -O UTF-8 兜底

部署流程(7 步)

[1] 启动  → [2] SSH 预检  → [3] 复用/构建  → [4] SCP 上传
   → [5] 解压 webRoot  → [6] reload nginx  → [7] 清理临时  → SUCCESS

详见 站点发布到主机


个人中心

登录用户可在「个人信息」页面修改自己的资料:

  • 📝 编辑用户名、邮箱
  • 🔑 修改登录密码
  • 👤 查看当前角色和权限

下一步

了解了平台功能后,可以继续阅读 技术架构 了解系统设计,或直接查看 部署说明 开始部署。

基于 VitePress 构建