Files
john 4e21ca937a
Deploy Documentation / deploy (push) Has been cancelled
Canary / Prepare Version (push) Has been cancelled
Canary / build-cli (push) Has been cancelled
Canary / Upload Install Script (push) Has been cancelled
Canary / bundle-desktop (push) Has been cancelled
Canary / bundle-desktop-intel (push) Has been cancelled
Canary / bundle-desktop-linux (push) Has been cancelled
Canary / bundle-desktop-windows (push) Has been cancelled
Canary / bundle-desktop-windows-cuda (push) Has been cancelled
Canary / Release (push) Has been cancelled
Unused Dependencies / machete (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / Check Rust Code Format (push) Has been cancelled
CI / Build and Test Rust Project (push) Has been cancelled
CI / Build Rust Project on Windows (push) Has been cancelled
CI / Check MSRV (push) Has been cancelled
CI / Lint Rust Code (push) Has been cancelled
CI / Check Generated Schemas are Up-to-Date (push) Has been cancelled
CI / Test and Lint Electron Desktop App (push) Has been cancelled
CI / H5 Plaza Tests and Build (push) Has been cancelled
Live Provider Tests / check-fork (push) Has been cancelled
Live Provider Tests / changes (push) Has been cancelled
Live Provider Tests / Build Binary (push) Has been cancelled
Live Provider Tests / Smoke Tests (push) Has been cancelled
Live Provider Tests / Smoke Tests (Code Execution) (push) Has been cancelled
Live Provider Tests / Compaction Tests (push) Has been cancelled
Live Provider Tests / goose server HTTP integration tests (push) Has been cancelled
Publish Ask AI Bot Docker Image / docker (push) Has been cancelled
Publish Docker Image / docker (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
Add TKMind platform extensions, H5/MindSpace stack, and deployment tooling.
Fork goose with custom MCP widgets, platform extensions (aider, git, web, search),
MindSpace H5 backend/frontend, Plaza/Ops UIs, and deploy scripts for tkmind.cn.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 21:30:20 +08:00

8.2 KiB
Raw Permalink Blame History

sidebar_position, title, sidebar_label, description
sidebar_position title sidebar_label description
7 运营后台 运营后台 运营后台功能规范、权限设计、内容审核流程、精选管理和数据看板

运营后台

定位

运营后台(ui/ops/)是广场内容治理的专用工具,面向运营人员,不面向普通用户。

与现有管理后台(/admin)的分工:

功能 现有 /admin 运营后台 /ops
用户管理(冻结、套餐)
LLM 密钥和系统配置
广场内容审核
精选和推广管理
广场数据看板
违规帖子处理
创作者认证

关键原则:运营人员看不到 LLM 密钥、系统配置和付费记录,系统管理员看不到广场审核队列。


访问控制

运营后台通过 Nginx 限制只允许内网 IP 访问:

location /ops {
    allow 10.0.0.0/8;
    deny all;
    proxy_pass http://127.0.0.1:3002;
}

后端 API /api/ops/v1/* 通过独立中间件验证 ops_role

ops_role = reviewer   内容审核人员,可审核帖子和评论
ops_role = editor     编辑,可设置精选和标签
ops_role = ops_admin  运营管理员,所有运营权限 + 查看数据看板

users 表新增 ops_role ENUM('none', 'reviewer', 'editor', 'ops_admin') DEFAULT 'none',由系统管理员分配。


功能模块

1. 审核队列

入口/ops/review

页面布局

┌────────────────────────────────────────────────────────┐
│  审核队列  [待审核 234]  [已审核 1,892]  [已拒绝 45]    │
├────────────────────────────────────────────────────────┤
│  筛选:分类 ▼  时间范围 ▼  关键词搜索                   │
├────────────────────────────────────────────────────────┤
│  ┌──────────────────────────────────────────────────┐  │
│  │  [封面缩略图]  标题                              │  │
│  │               作者 @slug  发布时间  分类          │  │
│  │               摘要预览                           │  │
│  │               [通过]  [拒绝]  [预览]             │  │
│  └──────────────────────────────────────────────────┘  │
│  ... 更多帖子 ...                                       │
└────────────────────────────────────────────────────────┘

操作流程

审核人员点击 [通过]
  → plaza_posts.status = published
  → 写入 ops_audit_log(操作人、时间、原状态、新状态)
  → 刷新队列

审核人员点击 [拒绝]
  → 弹出原因选择:违规内容 / 低质内容 / 重复内容 / 广告推广 / 其他(自填)
  → plaza_posts.status = rejected
  → 发送站内通知给创作者(内容:拒绝原因)
  → 写入 ops_audit_log

审核人员点击 [预览]
  → 新标签页打开 /plaza/p/{id}(不改变状态,仅预览)

批量操作:选中多条 → 批量通过(仅通过,拒绝需要逐条填写原因)。

SLA 要求:审核队列中 pending_review 超过 2 小时的帖子,展示橙色警告标记。


2. 举报处理

入口/ops/reports

用户可以对帖子和评论发起举报。后端新增 plaza_reports 表:

CREATE TABLE plaza_reports (
    id          CHAR(36)    NOT NULL,
    target_type ENUM('post', 'comment') NOT NULL,
    target_id   CHAR(36)    NOT NULL,
    reporter_id CHAR(36)    NOT NULL,   -- → users.id
    reason      ENUM(
                  'spam',
                  'violence',
                  'porn',
                  'political',
                  'privacy',
                  'other'
                ) NOT NULL,
    detail      VARCHAR(500) NOT NULL DEFAULT '',
    status      ENUM('pending', 'processed', 'dismissed') NOT NULL DEFAULT 'pending',
    processed_by CHAR(36)   NULL,       -- → users.id(运营)
    processed_at DATETIME   NULL,
    action_taken VARCHAR(200) NOT NULL DEFAULT '',
    created_at  DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    KEY idx_status_type (status, target_type, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

举报队列展示:同一帖子的举报数量 > 3 时,红色标记。运营可以直接从举报队列跳转隐藏帖子。


3. 精选管理

入口/ops/featured

运营可以将优质帖子设置为精选,精选内容在广场首页置顶展示。

精选位类型

类型 说明 最大数量
homepage_banner 首页顶部轮播(大图) 5 条
category_top 分类页置顶 每个分类 3 条
trending 热门趋势区 10 条

精选配置表

CREATE TABLE plaza_featured (
    id          CHAR(36)    NOT NULL,
    post_id     CHAR(36)    NOT NULL,   -- → plaza_posts.id
    position    VARCHAR(50) NOT NULL,
    sort_order  INT         NOT NULL DEFAULT 0,
    starts_at   DATETIME    NOT NULL,
    expires_at  DATETIME    NULL,       -- NULL 表示永不过期
    created_by  CHAR(36)    NOT NULL,
    created_at  DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    KEY idx_position_active (position, starts_at, expires_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

过期的精选自动从展示列表移除(查询时加 expires_at > NOW() OR expires_at IS NULL 条件)。


4. 创作者管理

入口/ops/creators

运营可以:

  • 搜索创作者(按用户名、帖子数、粉丝数排序)。
  • 为创作者添加认证标记(verified_badge)。
  • 限制创作者发帖权限(post_banned)或评论权限(comment_banned)。
  • 查看创作者的所有帖子。

users 表新增字段见 02-data-modelops_roleplaza_verified 等在同一迁移中定义)。


5. 数据看板

入口/ops/analytics(仅 ops_admin 可访问)

概览指标(今日 vs 昨日)

新帖数       发布转化率      日活用户       新注册来自广场
  ↑12%         32.4%          ↑8%             ↑23%

图表

  • 近 14 天每日新帖数折线图
  • 分类帖子分布饼图
  • TOP 10 创作者(按帖子数 / 点赞数 / 粉丝增长)
  • 违规比率趋势折线图
  • 广场带来的 MindSpace 新注册数(通过 UTM 参数追踪)

数据来源:后端 /api/ops/v1/analytics/* 接口,数据每小时预聚合写入统计表,不实时查询明细表。


运营日志

所有运营操作写入 ops_audit_log 表:

CREATE TABLE ops_audit_log (
    id          CHAR(36)    NOT NULL,
    operator_id CHAR(36)    NOT NULL,   -- → users.id(运营人员)
    action      VARCHAR(100) NOT NULL,  -- approve_post, reject_post, hide_post, set_featured...
    target_type VARCHAR(50) NOT NULL,
    target_id   CHAR(36)    NOT NULL,
    detail      JSON        NOT NULL,   -- 操作前后的状态快照
    created_at  DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    KEY idx_operator (operator_id, created_at DESC),
    KEY idx_target (target_type, target_id, created_at DESC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

日志只追加,不允许修改或删除,保留 180 天。


运营后台启动顺序

初期可以使用现有 /admin 后台临时管理内容审核(扩展一个"广场管理"菜单),等广场日活超过 1000 后,再独立启动 ui/ops/ 项目:

# Sprint 1:在 /admin 下新增简单的帖子审核入口(最小可用)
# Sprint 3:独立 ui/ops/ 项目上线完整审核队列
# Sprint 5:精选管理和数据看板