Capability · 能力与技术

不只是内容站
是一套可接入的社区中台

从 AI 资讯自动汇聚、UGC 审核闭环,到多租户隔离与角色分权接入 —— Gogo 社区以工程化的方式把「跨境内容与接入」做成可复用、可治理、可观测的中台能力。

业务价值

面向不同角色,交付可衡量的结果。

⚡

内容生产成本趋零

每日资讯由大模型自动汇聚、去重、入库,无需人工编辑;运营只需聚焦社区精选的审核与推荐。

🛡️

合规风险可控

敏感词筛查 + 人工复核 + 下架屏蔽三层闭环,审计日志原文脱敏留存,跨境场景合规有据可依。

🧩

接入边界清晰

接入商户与应用管理两套权限矩阵独立配置,文档、仪表台、角色权限各司其职,互不越权。

🌏

多租户天然隔离

同一套代码与数据库,按访问域名判定租户,UGC 与审核数据按站点列隔离,一套系统多品牌运营。

📈

运营数据可见

仪表台直接给出资讯总量、社区内容、待复核、线索与账号等关键指标,运营决策有数据支撑。

🔁

可持续演进

无重型框架依赖、原生 PHP + PDO,迁移脚本幂等可重复执行,改代码一键部署,长期维护成本低。

技术编写深度

下面是这套系统的真实工程实现要点 —— 不是概念,是已经跑在生产上的代码结构。

1 · 架构:极简前控制器 + 多租户路由

无框架依赖。单一前控制器 public/index.php 做路由分发,按 ?p= 白名单路由; 租户由访问域名判定,社区子域与主站共用代码与库,数据按 site 列隔离。

// app/render.php —— 按 Host 判定租户
function gp_site() {
    $host = strtolower(preg_replace('/:\d+$/', '', $_SERVER['HTTP_HOST'] ?? ''));
    return (strpos($host, 'community.gogo198.net') === 0) ? 'community' : 'main';
}

// public/index.php —— 社区官网与门户主站共用入口,按租户渲染不同布局
if ($site === 'community' && in_array($p, ['home','capability','access','dashboard'])) {
    echo gp_render_site($p === 'home' ? 'site_home' : $p, $ctx);
}

视图渲染走 gp_render_site():独立布局(深色导航 + 浅色内容), 与门户原有样式完全隔离,互不影响。

2 · 数据模型:面向内容与接入建模

核心表 gp_news 同时承载两类内容,用 type 区分, status 控制审核态,site 做租户隔离:

gp_news
  type    ENUM('daily','community')   -- 每日资讯 / 社区精选
  cat     VARCHAR(20)                 -- ecommerce 跨境电商 | token 全球词元
  status  TINYINT                     -- 0=待审核 1=已发布
  site    VARCHAR(20)                 -- main / community
  content TEXT, source, author, likes INT

gp_account                            -- 接入账号体系
  role    ENUM('super','merchant','appadmin')
  status  TINYINT                     -- 0=待邮箱验证 1=已激活 2=已禁用
  verify_token / verify_expires       -- 邮箱验证令牌(24h)
3 · 内容治理:敏感词三层闭环

用户发布一律先落 status=0,再按后台策略处理;命中词写入审计日志时原文脱敏。

$status = 0;                              // 社区发布一律先审
$hits = gp_sensitive_scan($title . "\n" . $content);
if ($hits) {
    gp_audit_log([... 'original_text' => gp_mask_for_log($text, $hits), ...]);
    if ($mode === 'block') { /* 直接拒绝,不入库 */ }
    gp_notify_sensitive($hits, $title);   // 邮件 + 企微双通道通知
}

三种策略可后台切换:review 转人工复核、mask 掩码后发布、block 直接拒绝。

4 · 账号与权限:角色矩阵 + 邮箱验证

注册生成 48 位随机令牌,24 小时有效;验证链接由可插拔发信层投递 (配置 SMTP 走真实发信,未配置则落开发日志便于联调)。权限以矩阵声明:

'merchant' => ['doc', 'integration'],            // 接入文档 + 接入管理
'appadmin' => ['roles', 'integration'],          // 角色权限 + 接入管理
'super'    => ['doc','integration','roles','accounts'],  // 全部

登录成功调用 session_regenerate_id(true) 防会话固定; 密码统一 password_hash()(bcrypt)。

5 · 自动化与交付

每日资讯由 cron 驱动的大模型采集任务自动完成,按「日期 + 标题」去重:

0 17 * * * /www/server/php/74/bin/php \
  /www/wwwroot/gogo-portal/app/daily_news.php >> /var/log/gogo-daily-news.log 2>&1

部署为单脚本 deploy.sh:打包上传(排除 .git 与数据库配置) → 执行幂等迁移 → 回环冒烟校验。静态资源带 ?v= 版本号自动破浏览器缓存。

按你的身份接入

接入商户拿文档与仪表台,应用管理管角色与接入 —— 邮箱验证后即可登录。

前往接入 →