---
title: SenteBI
canonical_url: "https://www.modelscope.cn/studios/lawson19/SenteBI"
md_url: "https://www.modelscope.cn/studios/lawson19/SenteBI.md"
repository: lawson19/SenteBI
chinese_name: "数弈BI"
last_updated: 2026-08-21
sdk_type: docker
downloads: 0
stars: 1
---

# SenteBI

> SenteBI - lawson19 在 ModelScope 创建的在线 Demo。数弈 SenteBI是一个融合了3D 数字人交互与生成式 AI 数据分析的下一代商业智能平台。它不仅仅是一个数据可视化工具，更是一个能够"听懂"你意图、"会说话"的智能数据分析师。

lawson19/SenteBI 是 ModelScope 魔搭社区上的在线可交互 Demo（创空间），基于 docker 构建，中文名为「数弈BI」。

- **Repository**: lawson19/SenteBI
- **SDK**: docker
- **Downloads**: 0
- **Stars**: 1
- **Last updated**: 2026-08-21

Source: https://www.modelscope.cn/studios/lawson19/SenteBI

---

# 🏭 制造业运营态势 Chat BI Agent

> 基于 Multi-Agent 架构的制造业运营智能问答与分析平台，融合自然语言问数、多表关联分析、运营日报、异常归因与数字人播报。

## 📖 项目简介

本项目将「数弈 SenteBI」改造为符合《制造业运营态势 Chat BI Agent 赛题说明》的参赛项目。系统基于官方制造业模拟数据集（3 维表 + 5 事实表），通过 **Multi-Agent 编排 + 制造业语义层 + 规则化兜底**，实现自然语言驱动的运营态势分析。

### 核心能力

| 能力 | 说明 |
|------|------|
| 🔍 **自然语言问数** | 产量/订单/质量/能耗/达成率/延期等多维度查询 |
| 🔗 **多表关联分析** | 8 表 JOIN + 业务时间窗口关联（订单↔生产↔质量↔能耗） |
| 📊 **图表生成** | 柱/线/饼/雷达/表格 + 制造业专属图表预设（含阈值警戒线） |
| 📋 **运营日报** | 一键生成结构化日报（KPI/趋势/结论/风险/建议） |
| ⚠️ **异常解释** | 5 预置异常确定性探测 + 跨表因果链归因 |
| 🔍 **溯源说明** | 每次查询附 trace（表/字段/JOIN/SQL/逻辑） |
| 💬 **多轮追问** | 会话级实体记忆 + 指代消解 |
| 📝 **SQL 展示** | 查询过程透明化，支持复制 |
| ✅ **数据质量检查** | 缺失值/异常值/外键完整性/口径一致性 |
| 👤 **角色视角** | 厂长/车间主任/质量负责人/能源负责人 |
| 🎙️ **数字人播报** | XmovAvatar SDK + TTS，播报日报与异常解释 |

---

## 🏗️ 技术架构

```
┌─────────────────────────── 前端 (React 18 + Vite 5 + ECharts 5) ───────────────────────────┐
│  顶栏: 角色选择器 | 数据集状态 | 数据质量铃铛 | 设置                                       │
│  viewMode: dashboard(运营大屏) | qa(智能问数) | report(运营日报) | avatar(数字人演播室)      │
│  组件: TracePanel | SqlViewer | AnomalyCard | DailyReportView | ManufacturingKpi | ...     │
└────────────────────────────────────────┬────────────────────────────────────────────────────┘
                                         │ REST
┌─────────────────────────── 后端 (Express + sql.js SQLite WASM) ────────────────────────────┐
│  路由: /api/dashboard · /api/qa-query · /api/operations-report                            │
│        /api/explain-anomaly · /api/data-quality · /api/load-dataset · /api/upload-analyze  │
│  Agent 编排层 (server/agents/*)                                                           │
│   RouterAgent → SQLAgent → ConsultantAgent → (ReportAgent / AnomalyAgent)                  │
│   ContextManager(多轮) · DataQualityAgent · NarratorAgent(数字人) · DashboardAgent          │
│  语义层 (server/db/schema.js): 表/字段/关系/指标/异常规则/同义词/角色                        │
│  数据层 (server/db/*): SQLite 8表+索引 / loadDataset / 查询执行                             │
└───────────────────────────────────────────────────────────────────────────────────────────┘
                                         │
                          火山引擎 DeepSeek V3 / 本地 LM Studio
```

### Agent 设计

| Agent | 职责 | 兜底策略 |
|-------|------|----------|
| **RouterAgent** | 意图分类（query/report/anomaly/data_quality/chat）+ widget 规划 | 确定性关键词匹配 |
| **SQLAgent** | 多表 SQL 生成 + 溯源元数据 | ruleSql.js 规则化 SQL |
| **ConsultantAgent** | 数据驱动文本回答 | 模板化回答 |
| **ReportAgent** | 运营日报生成（KPI+趋势+异常+叙事） | 规则化结论/风险/建议 |
| **AnomalyAgent** | 5 预置异常探测 + 跨表因果链归因 | buildRuleBasedAnalysis 因果链 |
| **ContextManager** | 多轮实体记忆 + 指代消解 | - |
| **DataQualityAgent** | 缺失值/异常值/外键/口径检查 | - |
| **NarratorAgent** | 图表口语化讲解词（数字人 TTS） | 模板化讲解词 |
| **DashboardAgent** | 角色化运营大屏图表构建 | - |

---

## 📂 数据集

### 官方 8 表（`data/manufacturing/`）

| 表名 | 类型 | 说明 | 行数 |
|------|------|------|------|
| `dim_model` | 维表 | 8 车型（轻卡/中卡/重卡/专用车） | 8 |
| `dim_workshop_line` | 维表 | 8 产线（总装/焊装/涂装/检测） | 8 |
| `dim_customer` | 维表 | 60 客户（经销商/大客户/物流/工程/政府） | 60 |
| `fact_orders` | 事实表 | 订单（含延期状态） | 1850 |
| `fact_production_plan` | 事实表 | 生产计划 | 2896 |
| `fact_production_actual` | 事实表 | 生产实绩（产量/达成率/停线） | 2896 |
| `fact_quality_defects` | 事实表 | 质量缺陷（12 种类型） | 2992 |
| `fact_energy_usage` | 事实表 | 能源消耗（电/水/气） | 2896 |

### 5 预置异常

| ID | 类型 | 描述 |
|----|------|------|
| A1 | 质量异常 | M003@L002 焊点虚焊 6月激增（23→465 起，20x） |
| A2 | 能耗异常 | L002 单车电耗 6/10-6/24 升高（150→191 kWh） |
| A3 | 订单延期 | C005 的 M003 6月集中延期（8 笔） |
| A4 | 班次效率 | L003 夜班达成率低于白班（0.85 vs 0.97） |
| A5 | 停线异常 | L005 4/8-4/18 停线时长高（49 vs 20 分钟/日） |

---

## 🚀 快速开始

### 环境要求

- Node.js ≥ 18
- npm ≥ 9

### 安装与运行

```bash
# 1. 安装依赖
npm install

# 2. 构建前端
npm run build

# 3. 启动服务（自动加载官方数据集）
node server/index.js
# 或开发模式（前后端分离）
npm run dev   # 前端 Vite Dev Server (5173)
node server/index.js  # 后端 (7860)
```

打开浏览器访问 `http://localhost:7860`。

### 配置

在「设置」中配置 LLM：
- **本地模式**（推荐）：LM Studio OpenAI 兼容接口，模型 `qwen3-30b-a3b`
- **火山引擎**：API Key + 模型 `deepseek-v3-250324`

> ⚠️ LLM 不可用时，系统自动启用规则化兜底（SQL 生成、异常归因、日报叙事），核心功能不受影响。

---

## 📡 API 接口

| 路由 | 方法 | 说明 |
|------|------|------|
| `/api/dashboard?role=plant_manager` | GET | 角色化运营大屏 |
| `/api/qa-query` | POST | 智能问数（多轮 + 溯源） |
| `/api/operations-report` | POST | 运营日报生成 |
| `/api/explain-anomaly` | POST | 异常解释 |
| `/api/data-quality` | GET | 数据质量检查 |
| `/api/load-dataset` | POST | 重载官方数据集 |
| `/api/upload-analyze` | POST | 上传 ZIP/CSV 数据集 |
| `/api/chart-speech/:chartId` | GET | 图表讲解词（数字人） |

### 问数示例

```bash
curl -X POST http://localhost:7860/api/qa-query \
  -H "Content-Type: application/json" \
  -d '{"question":"2026年6月各车型产量是多少","sessionId":"s1"}'
```

---

## 📁 项目结构

```
SenteBI/
├── data/manufacturing/          # 官方 8 CSV 数据集
├── server/
│   ├── index.js                 # Express 入口 + 路由编排
│   ├── db/
│   │   ├── database.js          # SQLite (sql.js) 管理
│   │   ├── loadDataset.js       # 多表建表 + 导入 + 索引
│   │   └── schema.js            # 语义层（表/关系/指标/异常/角色）
│   ├── agents/
│   │   ├── routerAgent.js       # 意图分类 + widget 规划
│   │   ├── sqlAgent.js          # 多表 SQL 生成
│   │   ├── ruleSql.js           # 规则化 SQL 兜底
│   │   ├── consultantAgent.js   # 数据驱动文本回答
│   │   ├── reportAgent.js       # 运营日报生成
│   │   ├── anomalyAgent.js      # 异常探测 + 因果链归因
│   │   ├── contextManager.js    # 多轮上下文管理
│   │   ├── dataQualityAgent.js  # 数据质量检查
│   │   ├── narratorAgent.js     # 数字人讲解词
│   │   └── dashboardAgent.js    # 角色化大屏
│   └── utils/
│       ├── llm.js               # LLM 调用封装
│       ├── json.js              # JSON 安全解析
│       └── chartBuilder.js      # chart/table widget 构建
├── src/
│   ├── App.jsx                  # 主应用（4 视图）
│   ├── components/
│   │   ├── RoleSelector.jsx     # 角色选择器
│   │   ├── TracePanel.jsx       # 溯源面板
│   │   ├── SqlViewer.jsx        # SQL 查看器
│   │   ├── AnomalyCard.jsx      # 异常解释卡片
│   │   ├── DailyReportView.jsx  # 运营日报视图
│   │   ├── ManufacturingKpi.jsx # 制造业 KPI 条
│   │   ├── DataQualityBell.jsx  # 数据质量铃铛
│   │   ├── MultiTurnContextBar.jsx # 多轮上下文条
│   │   ├── DatasetStatus.jsx    # 数据集状态
│   │   └── manufacturing.css    # 制造业组件样式
│   ├── utils/
│   │   └── ChartFactory.js      # 图表工厂 + 制造业预设
│   └── services/
│       └── AvatarService.js     # 数字人 SDK 服务
└── docs/                        # 交付物文档
    ├── 技术方案.md
    ├── 赛题自测报告.md
    ├── 运营日报样例.md
    └── 演示脚本.md
```

---

## 📄 交付物文档

- [技术方案.md](docs/技术方案.md) — 架构图 + 语义层 + Agent 设计 + 查询链路
- [赛题自测报告.md](docs/赛题自测报告.md) — 10 公开问题 + 5 隐藏问题验证
- [运营日报样例.md](docs/运营日报样例.md) — 2026-06 运营日报导出
- [演示脚本.md](docs/演示脚本.md) — 5 分钟演示视频脚本
