智叟云集系统架构解析:从品牌 AI 可见度监测到前后端协同

智叟云集系统架构解析:从品牌 AI 可见度监测到前后端协同

随着用户越来越多地通过 AI 助手获取信息,企业开始关注新的问题:当用户询问某个行业、产品或解决方案时,AI 是否会提到自己的品牌?回答是否准确?引用了哪些内容?不同平台的回答又有哪些差异?

智叟云集系统围绕这些问题,提供品牌管理、监控问题配置、多平台任务执行、回答与引用整理、历史趋势分析,以及服务商 API 接入能力。

它将一次分散的人工查询转化为可以持续执行、记录和分析的监控流程。

试用地址

1. 系统解决什么问题

传统人工监测通常需要逐个平台提问,再手动保存回答和截图。这种方式适合偶尔检查,但在持续运营中容易遇到三个问题:

  • 执行不统一:不同时间、不同人员使用的问题和操作方式可能不同。
  • 结果难追溯:回答、引用和截图分散保存,无法快速对应到具体任务。
  • 历史难比较:缺少统一数据结构,难以观察品牌表现随时间的变化。

智叟云集系统以"品牌---问题---任务---结果"为基本业务结构,将这些信息组织起来。

例如,企业可以为某个品牌配置一组真实用户问题,再选择需要监测的 AI 平台。系统执行后,将各平台回答、品牌提及情况、来源链接和可用证据关联到同一任务,方便查看和比较。

2. 系统整体技术架构

系统采用前后端分离的组织方式。

层级 主要技术或组成 主要职责
Web 前端 React、Vite 页面展示、配置表单、任务交互、结果查看
业务后端 Node.js、Fastify 身份校验、租户权限、业务接口、任务管理
数据存储 SQLite 保存品牌、问题、任务、结果及相关业务记录
采集执行 Playwright、第三方采集接口适配 执行平台查询、获取回答和证据
文件存储 受保护的截图及附件目录 保存和提供采集证据
部署入口 Nginx、应用服务进程 请求转发、静态资源访问和服务运行

业务请求的基本过程如下:

复制代码
用户浏览器 / 服务商系统
          │
          ▼
      Web / API 入口
          │
          ▼
  身份校验与租户权限判断
          │
          ▼
   品牌、问题、任务等业务模块
          │
          ▼
       采集执行模块
       ├─ 浏览器采集
       └─ 第三方采集接口
          │
          ▼
   回答、引用、截图与执行记录
          │
          ▼
    页面展示 / API 返回

目前的架构适合围绕业务模块持续迭代。随着并发量增加,可以进一步把业务 API 和采集 Worker 拆成独立部署单元。

3. 前端如何组织业务功能

前端不仅展示监控结果,也承担监控配置和问题定位的入口职责。

3.1 品牌总览

品牌总览围绕当前选中的品牌展示监控信息,帮助用户快速了解已有结果。

这里需要注意,品牌出现率等指标应结合有效样本数一起阅读。少量样本中的高出现率,并不等同于品牌在整个 AI 平台中的整体覆盖水平。

3.2 监控问题管理

问题管理用于维护需要提交给 AI 平台的查询内容,包括问题新增、编辑和分类。

问题设计直接影响监测结果。例如:

  • 品牌认知问题:某品牌怎么样?
  • 行业推荐问题:某类产品有哪些值得关注的品牌?
  • 场景需求问题:某种业务场景适合什么解决方案?
  • 产品比较问题:不同方案有哪些区别?

将问题按类别管理,可以让后续分析更有业务意义。

3.3 监控任务与结果详情

任务页面展示执行状态、平台范围、检查进度及结果摘要。进入任务详情后,可以进一步查看各问题与平台对应的回答、引用和诊断信息。

前端应把"提交成功"和"采集完成"明确区分。创建任务成功,只代表系统已经接受请求,实际采集通常需要等待。

3.4 来源、趋势与报告

来源中心帮助用户查看回答引用了哪些网页或内容;历史趋势用于观察不同日期的监测变化;报告模块用于集中查看任务与品牌相关结果。

这些功能共享同一套结果数据,避免用户在多个页面重复整理信息。

4. 后端为何需要按模块拆分

监控系统的复杂度主要来自业务之间的关联。如果把接口、采集、权限和计费都放进一个文件,后续增加平台或修改规则时会越来越难维护。

现有工程已按路由、服务、安全、Worker、基础设施和数据库等目录分开组织。其职责可以概括为:

复制代码
web/
  src/                 前端页面及交互
  dist/                前端构建产物

src/
  api/routes/          HTTP 路由
  services/            业务服务
  security/            身份与访问控制
  worker/              任务执行
  infrastructure/      外部能力适配
  db/                  数据库访问与结构管理

shared/                前后端或接口共享定义

这种结构的重点是明确边界:

  • 路由处理请求与响应。
  • 服务层组织业务规则。
  • 采集模块处理不同平台的执行差异。
  • 安全模块统一执行身份和权限判断。
  • 数据访问模块负责持久化。

例如,增加一个 AI 平台时,主要修改平台能力定义和采集适配器,而不应在每个业务接口里加入大量平台判断。

5. 数据如何形成完整的监测记录

系统中的核心对象包括:

对象 含义
租户 数据和权限的组织边界
品牌 被监测的业务主体
问题 提交给 AI 平台的查询内容
监控任务 一次监控执行的整体记录
采集样本 某个问题在某个平台上的一次执行结果
来源与证据 引用链接、截图及相关记录

其中,"任务"和"样本"需要分开理解。

一个任务可以包含多个问题和平台。部分平台成功、部分平台失败时,应保留成功样本,并准确记录失败原因,而不能只留下一个笼统的失败状态。

6. 技术代码展示:前端任务查询

以下代码为脱敏后的实现示意,不是项目源码原样摘录,展示如何将 API 调用与页面组件分离。

复制代码
// services/monitoring-client.ts
export async function getMonitoringRun(runId: string) {
  const response = await fetch(
    `/api/monitoring-runs/${encodeURIComponent(runId)}`,
    { credentials: "include" }
  );

  if (!response.ok) {
    throw new Error(`任务查询失败:${response.status}`);
  }

  return response.json();
}

// components/RunDetailButton.tsx
import { useState } from "react";
import { getMonitoringRun } from "../services/monitoring-client";

export function RunDetailButton({ runId, onLoaded }) {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState("");

  async function openDetail() {
    setLoading(true);
    setError("");

    try {
      const detail = await getMonitoringRun(runId);
      onLoaded(detail);
    } catch (err) {
      setError(err instanceof Error ? err.message : "请求失败");
    } finally {
      setLoading(false);
    }
  }

  return (
    <div>
      <button disabled={loading} onClick={openDetail}>
        {loading ? "加载中..." : "查看任务"}
      </button>
      {error && <p role="alert">{error}</p>}
    </div>
  );
}

这个示例强调的是职责分离,以及失败时给出明确反馈。对于实际运营系统,清晰的错误提示和正常展示结果一样重要。

7. 当前架构的演进方向

随着客户数量与任务量增加,系统可以继续完善:

  1. 将采集 Worker 与业务 API 独立部署。
  2. 增加持久化队列和任务恢复机制。
  3. 将截图等证据迁移到私有对象存储。
  4. 在并发和多实例需求明确后评估数据库迁移。
  5. 完善性能指标、失败告警与恢复演练。

智叟云集系统的核心价值,在于把 AI 平台中的品牌表现转化为可持续执行、可追溯和可分析的数据流程。

相关推荐
Tangyuewei1 小时前
Agent 别裸奔进生产:先搭架构、可观测、人审三道闸
人工智能·ai编程
睡后收入1 小时前
PDF 转 draw.io:把设计文档里的架构图恢复成下一版源文件
人工智能
用户6602676118791 小时前
换个对话就丢进度?给 AI Coding 留一张能核对的开发状态卡
人工智能
用户823145615271 小时前
AI 生成的代码,凭什么说它"可靠"?|5 个陷阱 + 一张自检清单
人工智能
Gu0Qiang1 小时前
从 0 到 1 打造 AI 提示流编排器:别让 Agent 原地鬼打墙!连续 3 次相同工具调用的柔性引导与硬熔断(开源系列 19)
人工智能·github
用户4015823324621 小时前
不开编辑器,在飞书里也能找 WES Code 的 AI 干活
人工智能·ai编程
闲云lazycloud1 小时前
第 1 课:Harness 与 Agent 运行时
人工智能·后端
智驭未来掌门人1 小时前
AI+行业赋能,到底什么才算落地?——一个差旅差标项目的深度自省
人工智能
不会是要长脑子了吧1 小时前
ChatGPT 网页端报 “Model not found“
人工智能·chatgpt