mini-excel-ai 集成手册

三种集成形态(API 集成模式 / AI 窗口集成 / 嵌入式集成)一次讲清:适用场景、鉴权与路径、请求与响应要点、示例代码与上线注意事项。面向新手开发者,可直接照抄集成。

无用户态 session_id + file_id 我要分析 · 报表 · 汇报

三种集成形态说明与选型

mini-excel-ai 提供同一套后端能力,仅用是否加载前端、AI 由谁承载区分三种接入方式。下表中文名为集成手册用语;与开放 API 中 mode / 查询参数的对应关系见表后对照。

API 集成模式

宿主不嵌入 mini 页面;自建 UI,直接调 REST / SSE。适合 B 端后台、已有数据看板、Mobile。

AI 窗口集成

iframe 只承载表格与三视图;AI 对话窗口在宿主侧,通过 postMessage SDK 驱动分析。

嵌入式集成

单 iframe 完整工作台(表格 + 三视图 + 内置 AI)。最快上线,宿主几乎无开发量。

维度API 集成模式AI 窗口集成嵌入式集成
宿主前端全自建iframe + 自建 AI仅 iframe
表格/三视图无(或自建)iframe 内iframe 内
集成复杂度中(REST+SSE)中-高(SDK)
品牌统一完全自控AI 侧统一mini 主题/后台可配

名称与 API 对照:创建会话、统计或审计场景中 mode 仍使用下列取值(与文档中文名一一对应):zero-ui → API 集成模式;hybrid → AI 窗口集成;full → 嵌入式集成。iframe 地址参数 ?mode=hybrid?mode=full 同理。

通用约定

Base URL

下文用 {BASE} 表示部署根地址,例如 https://mini.example.com。前后端同源时可为空字符串,由网关反代统一到 /api/mini/...

鉴权(会话)

系统无用户 JWT。多数写操作与部分读操作在 Header 中携带:

Authorization: Bearer <session_id>

部分路由将会话 ID 写在 URL 路径中(如 /session/{session_id}/files),上传等接口以具体 API 为准。

创建会话

说明
方法 · 路径POST {BASE}/api/mini/session
Request JSONmode:可选 zero-ui(API 集成模式)| hybrid(AI 窗口集成)| full(嵌入式集成,默认)
external_ref:可选,租户/业务侧 ID
metadata:可选,自定义对象
Response JSONsession_id, mode, created_at, active_file_id(可选)

CORS

跨域嵌入或浏览器直连 API 时,需在服务端配置允许的 Origin(如环境变量中的白名单)。平台配置接口会返回 embed_allowed_origins 等字段供前端校验。

核心 HTTP 接口速查表

下列为常见集成路径;实际以你方网关与部署拓扑为准,对浏览器暴露的 URL 通常与下表一致。

方法路径说明
POST/api/mini/session创建会话
POST/api/mini/session/{session_id}/filesmultipart 上传文件
GET/api/mini/session/{session_id}会话状态(含 workbook_state)
PUT/api/mini/session/{session_id}/workbook回填 workbook 快照
GET/api/mini/session/{session_id}/artifacts产物列表
DELETE/api/mini/session/{session_id}/artifacts/{artifact_id}删除产物
GET/api/mini/config/platform平台配置(主题、上传限制、允许域名等)
POST/api/mini/large-file/prepare/{session_id}/{file_id}大文件分析准备(服务端解析索引,供后续指令使用)
GET/api/mini/large-file/preview/{session_id}/{file_id}Query:sheet, offset, limit
POST/api/mini/large-file/operation/stream大文件 AI 流式分析(SSE)
GET/api/mini/large-file/download-results/{session_id}/{source_file_id}合并下载多表;Query:sheets(逗号分隔可见表名)
GET/api/mini/large-file/download/{session_id}/{file_id}下载单次导出文件
POST/api/mini/excel/command普通分析指令(常与 SSE 配合)
GET/mini/sse/{session_id}普通分析 SSE 连接
POST/api/mini/report/generate生成报表 Body:session_id, template, title
GET/api/mini/report/templates报表模板列表
POST/api/mini/pptx/generate生成 PPTX Body:session_id, title
GET/api/mini/pptx/preview/{artifact_id}PPTX 预览元数据
GET/api/mini/artifacts/{artifact_id}/download产物下载;Query:format:json | pdf | png(视部署)
错误响应:通常为 JSON { "detail": "..." },HTTP 状态码 400 / 401 / 404 / 500 / 503 等。流式接口在 SSE 事件 error / 尾包 done 中携带原因。

模式一:API 集成模式(纯 API)

  宿主 UI  ⇄  REST / SSE  ⇄  mini-excel-ai 服务端  ⇄  数据分析与 AI 能力(实现细节对集成方透明)

推荐主路径:大文件分析

  1. POST /api/mini/sessionsession_id
  2. POST /api/mini/session/{id}/files 上传文件,得 file_id
  3. POST /api/mini/large-file/prepare/{session_id}/{file_id} 确保就绪
  4. POST /api/mini/large-file/operation/stream 发送指令,消费 SSE(文本块、工具结果、完成)
  5. 需要合并结果 Excel:GET .../download-results/...(可带 ?sheets=表1,表2 与画布对齐)

上传响应(典型字段)

上传成功响应常见字段:file_id, original_name, file_size, is_large_file, large_file_status, session_idsheet_names 等详情可在 prepare / preview 响应中补充。

SSE(大文件流)事件(概念)

事件含义
text模型流式输出片段
tool_call / tool_result工具调用与结果;可能含新生成文件信息
excel_operation面向表格的操作描述(纯 API 场景常仅记录)
done结束:success, message
error错误信息

示例(Fetch + 流)

// 1. 创建会话
const r1 = await fetch('{BASE}/api/mini/session', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ mode: 'zero-ui', external_ref: 'tenant-1' }),
});
const { session_id } = await r1.json();

// 2. 上传(FormData)
const fd = new FormData();
fd.append('file', fileBlob, 'data.xlsx');
const r2 = await fetch(`{BASE}/api/mini/session/${session_id}/files`, { method: 'POST', body: fd });
const fileInfo = await r2.json();

// 3. Prepare + Stream(伪代码:按项目 SSE 解析器读取 event/data)
await fetch(`{BASE}/api/mini/large-file/prepare/${session_id}/${fileInfo.file_id}`, { method: 'POST' });

生产环境建议使用随部署提供的浏览器 SDK(如 MiniExcelAI.api(baseUrl)),已封装取消、解析与 URL 拼接;无需关心服务端内部实现。

演示页:部署后访问 /zero-ui-demo.html

模式二:AI 窗口集成(iframe + 外置 AI)

┌─ 宿主:自建 AI 窗口(SDK) ─┐    postMessage    ┌─ iframe:表格 + 三视图 ─┐
│  sendAnalyzeCommand / …    │ ←──────────────→ │  无内置 AI              │
└────────────────────────────┘                  └────────────────────────┘

iframe 地址

{BASE}/index.html?mode=hybrid&session_id=auto

session_id=auto 由应用自动建连;也可传入已有 session_id 复用会话。

SDK 引入

const sdk = MiniExcelAI.connect(document.getElementById('mini-frame'), {
  origin: 'https://mini.example.com',
});
await sdk.ready(); // { session_id }
sdk.sendAnalyzeCommand('按地区汇总销售额');
sdk.changeView('reportCard'); // analyze | reportCard | presentation

常用事件(sdk.on(name, handler)

事件说明
readyiframe 内应用就绪
mini-excel-ai:workbookChange表格数据变更
mini-excel-ai:fileUploaded文件上传完成
mini-excel-ai:operationProgressAI 执行进度
mini-excel-ai:artifactReady报表/PPT 等产物可下载
mini-excel-ai:error错误

演示页:/hybrid-demo.html(或你站点等价路径)。iframe 建议 sandboxallow-scripts allow-same-origin allow-forms allow-popups allow-downloads,并按需 allow 剪贴板。

模式三:嵌入式集成(完整内置 UI)

┌────────────────── iframe:嵌入式工作台 ─────────────────┐
│  [ 我要分析 | 我要报表 | 我要汇报 ]  +  内置 AI 助手    │
│  电子表格画布                                           │
└─────────────────────────────────────────────────────────┘

iframe 地址

{BASE}/index.html?mode=full

可选:宿主先 POST /api/mini/session,再把 session_id 传入 URL,便于与 external_ref 对齐。

宿主侧监听(可选)

仍可 MiniExcelAI.connect(iframe) 仅订阅 artifactReady 等事件,无需代替用户操作。

适合最快交付:用户上传、对话、导出均在 iframe 内完成。

产物下载与报表格式

场景方式
报表 / PPTX 元数据GET /api/mini/session/{session_id}/artifacts 列表项含 artifact_id, artifact_type, meta
产物文件GET /api/mini/artifacts/{artifact_id}/download
报表多格式部分部署支持 Query ?format=json|pdf|png;响应 Content-Type 等以实际环境为准
大文件合并下载GET .../large-file/download-results/{session_id}/{source_file_id};Query sheets= 逗号分隔表名,与前端可见 tab 对齐
合并下载:当工作簿中含超大规模「原始数据工作表」时,服务端可能为稳定性自动将其排除在本次合并包之外,响应头可能出现 X-Skipped-Sheets / X-Skip-Reason。用户手头的原始上传文件仍可作为权威数据源单独保留或下发。

注意事项与排错

更细的 Markdown 说明见项目内 docs/integration-zero-ui.mdintegration-hybrid-ai-window.mdintegration-full-ui.md