无答案分析

无答案 / 未命中查询分析:顶部 12 根自绘趋势柱(纯 div/i,不依赖 charts)+ 零结果 Top 表(次数 / 占比 / 零点击率 / 最近出现 / 行内行动钮「建文档」「加同义词」)。口径纪律内建:「零点击 ≠ 失败」以表头小字 + tooltip 声明,不染告警色;queries 为空渲染空态「没有未命中查询——覆盖良好」。initKbGap 为 document 级 click 委托 → icen:kb-gap-action { query, action }。

行内「建文档 / 加同义词」→ icen:kb-gap-action · 悬停表头「零点击 ≠ 失败」看口径注释 · 悬停趋势柱看日期与次数

<div id="kb-gap-demo"></div><p class="demo-label" id="kb-gap-log" style="margin-top:8px">行内「建文档 / 加同义词」→ icen:kb-gap-action · 悬停表头「零点击 ≠ 失败」看口径注释 · 悬停趋势柱看日期与次数</p>

安装

bun add @icen.ai/ui

一行引入该组件(CSS 与 behavior 自动带上,无需关心内部 CSS 文件名):

import { initKbGap } from '@icen.ai/ui/kit/kb-gap';initKbGap();

也可以用脚手架直接打印引入行:

bunx --bun @icen.ai/ui add kb-gap

Astro 项目注意:kit 入口里的 CSS import 在页面 <script> 里会被 Astro 的 client bundle 摇掉——请改在布局 frontmatter 里引 CSS(import '@icen.ai/ui/components/kb-ops.css';),JS 行为仍可走 kit。Vite SPA / webpack 项目无此问题。

用法

import { renderKbGap, initKbGap } from '@icen.ai/ui/kit/kb-gap'; initKbGap();   // document 级 click 委托(幂等 + 销毁函数),动态插入免重跑renderKbGap(el, {  queries: [    { text: '生育津贴怎么申请', count: 34, shareOfAllQueries: 0.021, zeroClickRate: 0.412,      lastSeenAt: new Date(Date.now() - 3 * 864e5).toISOString() },  ],  trend: [{ label: '10-01', value: 34 }],   // 自绘柱,取末 12 根;缺省不渲染趋势区});// queries 为空 → 空态「没有未命中查询——覆盖良好」(覆盖良好是一等状态,无死路)el.addEventListener('icen:kb-gap-action', (e) => {  // e.detail = { query, action: 'create-doc' | 'add-synonym' }});