解析管线
文档解析管线时间线 .kb-pipeline:折叠摘要行(状态徽章 + 标题 + N chunks + 耗时 + 步数)+ 步骤 ol + 失败错误区(阶段定位 + 原因),run.progress 可选细粒度进度条。六态状态机(unstart/queued/running/cancel/done/fail);running / fail 自动展开、用户展开过则不再被自动态覆盖(与 ai-reasoning 同契约),重渲染保留折叠态。失败重跑粒度 = 单文档(无死路):icen:kb-pipeline-rerun { documentId };折叠派 icen:kb-pipeline-toggle { el, open }。
三态各一张卡:done(折叠)/ running(自动展开 + 进度条)/ fail(自动展开 + 错误区)——点摘要行折叠,点「重跑」派事件
事件日志:等待交互
<p class="demo-label" style="margin:0 0 8px">三态各一张卡:done(折叠)/ running(自动展开 + 进度条)/ fail(自动展开 + 错误区)——点摘要行折叠,点「重跑」派事件</p><div id="demo-kb-pipeline"></div><p class="demo-label" id="demo-kb-pipeline-log" style="margin-top:8px">事件日志:等待交互</p> 安装
bun add @icen.ai/ui pnpm add @icen.ai/ui npm install @icen.ai/ui yarn add @icen.ai/ui 一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):
import { initKbPipeline } from '@icen.ai/ui/kit/kb-pipeline';initKbPipeline(); 也可以用脚手架直接打印引入行:
bunx --bun @icen.ai/ui add kb-pipeline
Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/kb-ingest.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。
用法
import { renderKbPipeline, initKbPipeline } from '@icen.ai/ui/kit/kb-pipeline';initKbPipeline(); // 委托折叠 + 单文档重跑(root 缺省 document,后续插入的卡一并接管) renderKbPipeline(el, { documentId: 'doc-vendor-32', title: '供应商准入手册 v3.2.pdf', status: 'fail', // unstart | queued | running | cancel | done | fail progress: 62, // 可选细粒度进度条(0–100) steps: [ { key: 'upload', label: '上传', status: 'done', detail: '8.2 MB', elapsedMs: 420 }, { key: 'parse', label: '解析', status: 'done', detail: '26 页 · 2 表', elapsedMs: 3100 }, { key: 'table', label: '表格识别', status: 'fail', detail: 'sheet「指标口径」', elapsedMs: 1800 }, { key: 'chunk', label: '切片', status: 'unstart' }, ], chunkCount: 48, elapsedMs: 12620, error: { stage: '表格识别', message: '合并单元格跨页断裂:B14 外键引用为空' },});// 数组输入渲染纵向列表(外层 .kb-pipeline-list);空数组给空态「暂无解析任务」// running / fail 折叠初值自动展开;用户操作过(按 data-document-id 记忆)则重渲染不覆盖// 事件:icen:kb-pipeline-toggle { el, open } / icen:kb-pipeline-rerun { documentId }