标注队列

人工标注 / 审查队列:左侧队列(分配人过滤 + 状态点)+ 右侧审查卡(rubric 行——categorical chips(前 9 项带数字角标)与 numeric 0–10 滑杆)。全键盘流内建:←/→ 切条目、1–9 选选项、⌘/Ctrl+Enter 完成并下一条、? 显隐快捷键浮层。createKbReview 返回 { current, next, prev, submit, destroy } 句柄;打分 / 提交 / 分配走事件(icen:kb-review-score / -submit / -assign)与 onAction 回调双通道。

全键盘流(先点进右侧审查卡):← → 切条目 · 1–9 选选项 · ⌘/Ctrl+↵ 完成并下一条 · ? 快捷键 · Esc 关闭 · 左上可按分配人过滤

<div id="kb-review-demo"></div><p class="demo-label" id="kb-review-log" style="margin-top:8px">全键盘流(先点进右侧审查卡):← → 切条目 · 1–9 选选项 · ⌘/Ctrl+↵ 完成并下一条 · ? 快捷键 · Esc 关闭 · 左上可按分配人过滤</p>

安装

bun add @icen.ai/ui

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

import '@icen.ai/ui/kit/kb-review';

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

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

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

用法

import { createKbReview } from '@icen.ai/ui/kit/kb-review'; const review = createKbReview(el, {  queue: [    { id: 'rv-1', target: { kind: 'answer', id: 'a-8841', label: '生育津贴流程回答' }, status: 'open', assignee: '李瑶' },  ],  configs: [    { name: '相关性', type: 'categorical', categories: ['相关', '部分相关', '不相关'] },    { name: '忠实度', type: 'categorical', categories: ['忠实', '有臆造', '无法判断'] },    { name: '可用性', type: 'numeric' },        // 0–10 滑杆(step 0.5)  ],  assignees: ['李瑶', '周明'],                  // 提供时审查卡带分配下拉(可省)  onAction: (a) => console.log(a.type, a.taskId, a.name, a.value),});// 全键盘流内建在审查卡上(无需宿主接线):←/→ 切条目 · 1–9 选 categorical · ⌘/Ctrl+Enter 完成 · ? 快捷键review.next(); review.prev(); review.submit(); review.destroy();// 事件双通道:icen:kb-review-score {taskId, name, value} / -submit {taskId} / -assign {taskId, assignee}