这个账号还没有被授权任何模块
按平台权限口径:「管理员」和「BOSS」是全权账号(所有模块都能看);
其它成员按模块逐个授权 —— 勾了哪个模块,左侧导航才出现那一项。
当前账号没有勾选任何模块,所以看不到业务数据。请联系管理员 / BOSS 到「账号管理 → 编辑权限」给你勾上需要的模块。
当前账号没有勾选任何模块,所以看不到业务数据。请联系管理员 / BOSS 到「账号管理 → 编辑权限」给你勾上需要的模块。
加载中…
今天 {{ today.summary.total }} 件事要做
新客待联系 {{ today.summary.new }}
待上门 {{ today.summary.visit }}
到点该跟进 {{ today.summary.due }}
超 {{ today.沉寂天数 }} 天没动静
{{ today.summary.silent }}
今天没有待办 —— 去「全部客户」看看,或点右上角「+」新增客户
{{ g.标题 }}
{{ g.count }}
{{ c.客户姓名 || '点填姓名' }}
{{ c.线索状态 || '待联系' }}
重要
成交 {{ c.成交次数 || 0 }} 次 · 售后 {{ c.售后次数 || 0 }} 次
{{ c.手机号 || '—' }}
·{{ c.跟进门店 }}
未分配门店
已逾期
·{{ c.客户地址 }}
{{ fuWhen(c.最近跟进列表[0].跟进时间) }}{{ c.最近跟进列表[0].跟进内容 || '(无内容)' }}
今天没有待办
本月客资
{{ stats.month_new || 0 }}条
年度客资
{{ stats.year_new || 0 }}条
本月成交
{{ stats.month_deal || 0 }}条
年度成交
{{ stats.year_deal || 0 }}条
总量 {{ stats.total || 0 }}
今日 +{{ stats.today_new || 0 }}
待联系 {{ stats.unfollowed || 0 }}
筛选
加载中…
没有符合条件的客资
{{ wkLabel(wkKeyOf(i)) }}
{{ wkSizeOf(i) }} 条
{{ (c.客户姓名 || '未').slice(0, 1) }}
{{ c.归属人 || '未分配' }}
门店 {{ c.跟进门店 }}
未分配门店
{{ c.客户姓名 || '未命名' }}
成交 {{ c.成交次数 || 0 }} 次 · 售后 {{ c.售后次数 || 0 }} 次
{{ c.手机号 || '—' }}
客户类别{{ c.客户类别 }}
咨询项目{{ (c.咨询项目 || []).join(' / ') }}
{{ c.线索状态 || '待联系' }}
{{ c.线索时间文本 || '—' }}
上门 {{ c.上门时间文本 }}
报价 {{ amountText(c.报价金额分) }}
已看 {{ c.首次查看时间文本 }}
{{ c.跟进次数 }} 天
逾期 · 应 {{ c.下次跟进时间文本 }}
今日跟进 · {{ c.下次跟进时间文本 }}
下次跟进 {{ c.下次跟进时间文本 }}
{{ c.最近跟进列表[0].跟进内容 || '(无内容)' }}
{{ shortMs(c.最近跟进列表[0].跟进时间) }}
暂无跟进记录
最近:{{ c.最近跟进列表[0].跟进内容 || '(无内容)' }}
上门 {{ c.上门时间文本 }}
还没有跟进记录
{{ c.客户姓名 || '点填姓名' }}
{{ c.线索状态 || '待联系' }}
重要
成交 {{ c.成交次数 || 0 }} 次 · 售后 {{ c.售后次数 || 0 }} 次
{{ c.手机号 || '—' }}
·{{ c.跟进门店 }}
未分配门店
已逾期
·{{ c.客户地址 }}
{{ fuWhen(c.最近跟进列表[0].跟进时间) }}{{ c.最近跟进列表[0].跟进内容 || '(无内容)' }}
加载中…
{{ mDay(f.跟进时间 || f.创建时间) }}
{{ mClock(f.跟进时间 || f.创建时间) }}
{{ f.跟进内容 || '(无内容)' }}
{{ x }}
{{ x }}
报价 {{ f.当时报价.报价编号 }} · {{ f.当时报价.施工量 }} · {{ amountText(f.当时报价.总价分) || '¥0' }}
工单 {{ f.当时工单.工单号 }} · {{ f.当时工单.状态 }}
还没有跟进记录
{{ pi[0] }}{{ pi[1] || '—' }}
⋯{{ listMoreText }}
客资总量
{{ stats.total || 0 }}
已跟进
{{ stats.followed || 0 }}
覆盖率 {{ followRate }}%
已成交
{{ stats.converted || 0 }}
成交率 {{ convertRate }}%
近 7 天新增
{{ stats.week_new || 0 }}
未查看
{{ stats.unseen || 0 }}
归属人还没点开 · 占 {{ unseenRate }}%
待联系
{{ progress['待联系'] || 0 }}
占 {{ pct(progress['待联系'], stats.total) }}
跟进中
{{ progress['跟进中'] || 0 }}
占 {{ pct(progress['跟进中'], stats.total) }}
上门
{{ progress['上门'] || 0 }}
占 {{ pct(progress['上门'], stats.total) }}
已报价
{{ stats.quoted || 0 }}
录了报价金额 · 占 {{ pct(stats.quoted, stats.total) }}
已流失
{{ progress['流失'] || 0 }}
占 {{ pct(progress['流失'], stats.total) }}
客户重要度分布
{{ k }}{{ v }}
暂无数据
客资进度分布
{{ k }}{{ v }}
暂无数据
归属人分布
{{ k }}
{{ v }} 条
暂无数据
地区分布
{{ r.k }}
{{ r.v }} 条
暂无数据
跟进效果追踪
加载中…
暂无数据({{ fxError }})
暂无数据
采纳 AI 方案
{{ fxData.adopted.clues }} 条客资
{{ fxData.adopted.won }} 成交
{{ fxRate(fxData.adopted) }}%
未采纳
{{ fxData.plain.clues }} 条客资
{{ fxData.plain.won }} 成交
{{ fxRate(fxData.plain) }}%
成交率差
{{ parseFloat(fxDiff(fxData)) > 0 ? '+' : '' }}{{ fxDiff(fxData) }} 个百分点
{{ fxDiffCls(fxData) === 'down'
? '采纳组反而更低,值得复盘' : (fxDiffCls(fxData) === 'up'
? '采纳组更高' : '两组持平') }}
按销售
客资(采纳 / 未采纳)
成交率 · 差值
{{ u.user }}
{{ fxRate(u.adopted) }}%
{{ fxRate(u.plain) }}%
{{ parseFloat(fxDiff(u)) > 0 ? '+' : '' }}{{ fxDiff(u) }}
按话术类型
客资(采纳 / 未采纳)
成交率 · 差值
{{ t.type }}
{{ fxRate(t.adopted) }}%
{{ fxRate(t.plain) }}%
{{ parseFloat(fxDiff(t)) > 0 ? '+' : '' }}{{ fxDiff(t) }}
采纳未采纳
率差单位:个百分点(采纳 − 未采纳)
样例数据
抖音来客客资采集(已打通)——采集由本机常驻代理执行;
平台内可下发采集任务(上方「立即采集」)或设定定时采集,
到点由云端自动下发;下方为同步结果的只读展示。
数据来源:
数据来源:
F:\WorkBuddy来客客资采集\output\data\all_clues.csv ·
同步脚本:tools/sync_laike.py ·
按「线索ID」幂等去重,不覆盖人工跟进数据
{{ p.来源平台 || p.账号名称 }}
{{ p.接入状态 || '待接入' }}
{{ p.账号名称 }}
同步方式:{{ p.同步方式 }}
上次同步:{{ p.上次同步时间文本 }}
抖音(来客)
已接入
兴饰佳建筑家居膜(重庆总店)
同步方式:采集脚本 → 平台只读展示
已同步 {{ stats.total || 0 }} 条 · 最近 {{ latestClueTime }}
采集数据状态
来源平台
抖音(来客)
已同步客资
{{ stats.total || 0 }} 条
最近同步
{{ latestClueTime }}
采集门店
{{ (meta.stores || []).join('、') || '—' }}
提示:更新数据可点上方「立即采集」(管理员),或由「定时采集」到点自动下发;
采集端脚本跑完后也可在 PC 端点右上角「同步数据」重新读取。
获
获客 · 子模块规划中
本模块承接「把客户引进来」的采集与运营侧工作,
与「客资」(线索进来之后的跟进 / 转化)分列。
子模块的个数与名称待定,以下为已登记的候选方向。
{{ m }}
门店档案:维护门店名称 / 简称 / 地址 / 电话 / 负责人 等基础信息。
客资、工单等业务的「门店」字段从此统一从这里选,保证口径规范统一。
本期只做档案,不做数据隔离 —— 原「本店」数据范围已下架(口径见需求文档 2.3.1),
门店级隔离待档案数据规范后再评估恢复。
本页固定仅管理员 / BOSS 可改,与「账号管理」「系统日志」一致,不可授予其它成员。
本页固定仅管理员 / BOSS 可改,与「账号管理」「系统日志」一致,不可授予其它成员。
| 门店名称 | 简称 | 负责人 | 电话 | 地址 | 状态 | 排序 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ s.门店名称 }} | {{ s.简称 || '—' }} | {{ s.负责人 || '—' }} | {{ s.电话 || '—' }} | {{ s.地址 || '—' }} | {{ s.状态 }} | {{ s.排序 }} | |
| 还没有门店档案 —— 点右上角「+ 新建门店」添加第一家 (例如「兴饰佳建筑家居膜(重庆总店)」) | |||||||
咨询项目字典:客资跟进 / 编辑时「咨询项目」的多选项唯一真源。
默认已内置 玻璃膜 / 家具膜 / 改色膜 / 镀晶 / 合作,可在此新增、改名、删除。
本页固定仅管理员 / BOSS 可改,与「门店配置」「账号管理」「系统日志」一致,不可授予其它成员。
删除某项后,已选过该项的客资历史记录仍保留,只是新建 / 编辑时不再出现该选项。 字典属平台自有配置,不进主库、不进飞书镜像。
删除某项后,已选过该项的客资历史记录仍保留,只是新建 / 编辑时不再出现该选项。 字典属平台自有配置,不进主库、不进飞书镜像。
| # | 咨询项目名称 | 排序 | 操作 |
|---|---|---|---|
| {{ i + 1 }} | {{ it.名称 }} | {{ it.排序 }} | |
| 还没有咨询项目 —— 在上方输入框里添加(例如「玻璃膜」) | |||
主库(服务器 SQLite)是唯一权威源,飞书多维表格是镜像 / 辅
—— 用于飞书侧查看、协作、导出。
平时在平台里的增删改查只落主库,不会自动推给飞书; 什么时候想让飞书侧同步,在这里点「立即镜像」。
平时在平台里的增删改查只落主库,不会自动推给飞书; 什么时候想让飞书侧同步,在这里点「立即镜像」。
· 幂等:只推「上次镜像之后改过」的行,重复点不会产生重复记录;
· 账号 / 门店档案 / 系统日志永不镜像(避免账号数据外泄与两端不一致);
· 为「固定时间自动镜像」预留了接口 —— 本版默认只手动,日后开启定时无需改业务逻辑;
· 本页固定仅管理员 / BOSS 可执行,每次执行都写系统日志(动作码
· 账号 / 门店档案 / 系统日志永不镜像(避免账号数据外泄与两端不一致);
· 为「固定时间自动镜像」预留了接口 —— 本版默认只手动,日后开启定时无需改业务逻辑;
· 本页固定仅管理员 / BOSS 可执行,每次执行都写系统日志(动作码
mirror.run)。
镜像目标:
{{ mirror.base_token || '—' }}
通道:{{ mirror.identity_mode === 'app' ? '自建应用' : '本机 CLI 登录态' }}
自动镜像:{{ mirror.auto_minutes ? ('每 ' + mirror.auto_minutes + ' 分钟') : '未开启(手动)' }}
最近镜像:{{ mirrorTimeText(mirror.last_mirror) }}
上次镜像结果
{{ mirrorResult.ok ? '全部成功' : '部分失败' }}
{{ mirrorResult.elapsed_ms }} ms
推送行数
{{ mirrorResult.total.推送 }}
新建 / 更新 / 删除
{{ mirrorResult.total.新建 }} / {{ mirrorResult.total.更新 }} / {{ mirrorResult.total.删除 }}
失败
{{ mirrorResult.total.失败 }}
{{ t.表名 }}:{{ t.错误.join(';') }}
各业务表状态
待镜像合计 {{ mirror.pending_total }} 行
| 业务表 | 主库条数 | 待镜像 | 从未镜像 | 最近镜像 | 操作 |
|---|---|---|---|---|---|
| {{ t.表名 }} | {{ t.主库条数 }} | {{ t.待镜像条数 ? t.待镜像条数 + ' 行待推' : '已同步' }} | {{ t.从未镜像 }} | {{ mirrorTimeText(t.最近镜像时间) }} | |
| {{ mirrorLoading ? '正在读取主库状态…' : '主库暂时没有业务表' }} | |||||
为什么设成手动?飞书基础版 API 额度只有 1 万次/月(同租户所有应用共享)。
手动镜像把飞书调用压缩到「需要时才用」,额度不随业务量增长而爆掉;
平台内部的读全部走本地主库,0 次飞书调用。
飞书侧会有延迟 —— 这是设计内的代价:改了数据想让人在飞书里看到,记得来这里点一下镜像。
飞书侧会有延迟 —— 这是设计内的代价:改了数据想让人在飞书里看到,记得来这里点一下镜像。
云上平台 → 企业微信群
{{ notify.config.启用 ? '已启用' : '未启用' }}
群机器人 Webhook 通道
平台直发到企业微信群 —— 不需要域名备案、不需要 IP 白名单,配好即用。
⚠️ 只支持企业内部群(群里全是企业成员);含微信用户的 客户群官方不支持添加群机器人。
⚠️ 只支持企业内部群(群里全是企业成员);含微信用户的 客户群官方不支持添加群机器人。
· 群机器人限 20 条 / 分钟:超限本条放弃并记日志(下轮仍会补,不重试轰炸);
· 同一条客资的同一个到点时间只推一次(去重;发送失败自动释放占位,下轮重试);
· 保存配置 / 发送测试 / 手动扫描都写系统日志 (动作码
· 同一条客资的同一个到点时间只推一次(去重;发送失败自动释放占位,下轮重试);
· 保存配置 / 发送测试 / 手动扫描都写系统日志 (动作码
notify.set · notify.test · notify.scan)。
今日推送
{{ notify.today.条数 }} 条(成功 {{ notify.today.成功 }})
最近成功
{{ notifyTimeText(notify.last_ok) }}
扫描周期
每 {{ notify.tick || 300 }} 秒一轮
去重键
{{ notify.dedup }}
推送配置
仅管理员 / BOSS 可改
获取:目标群聊右上角「⋯」→ 群机器人 → 添加机器人 → 复制 Webhook 地址。
地址里含密钥,只存在服务器,不进代码库。
未填地址或地址格式不对时,总开关不会被开启。
提前 分钟
扫「下次跟进时间」落在未来 N 分钟内的客资,合并成一条推群;
已成交 / 已流失的不推。单条最多列 20 条客资。
跟随上面的「提前 N 分钟」
扫「上门时间」落在未来 N 分钟内的客资,把客户名 / 电话 / 地址推给群里 ——
销售约好上门后,系统到点会提醒该出发了。改期会重新提醒一次。
由部署脚本在上线完成后调用 —— 不做服务端自动发,这样本地重启服务
绝不会误发到真群。
推送日志
最近 30 条
| 时间 | 类型 | 摘要 | 结果 | 触发人 |
|---|---|---|---|---|
| {{ notifyTimeText(l.时间) }} | {{ l.类型 || '—' }} | {{ l.标题 || '—' }} | {{ l.结果 || '—' }} ({{ l.错误码 || '' }}) | {{ l.触发人 || '—' }} |
| 暂无推送记录 | ||||
⚠️ {{ usersWithoutStore.length }} 个成员未设「所属门店」
({{ usersWithoutStore.join('、') }})——
门店隔离下这些账号看不到任何客资,请尽快到下表补上门店。
账号由管理员 / BOSS 统一维护。初始密码统一为
{{ initPassword }},
建议首次登录后修改。
权限只有两层:① 全权账号(管理员 / BOSS —— 所有模块全部可见,
且可跨门店查看全部客资);
② 按模块授权(其它成员 —— 勾了哪个模块才有哪一项,每个模块还能单独设
「全门店 / 本人」,默认「本人」)。
客资按门店隔离:成员只能看到与自己所属门店一致的客资。 勾「全门店」= 本门店全部客资(店长);勾「本人」= 本门店内 只看归属人是自己的(销售)。
三个敏感开关默认关闭:查看完整手机号、看金额与成本、可删除记录。 工资单任何情况下只能看自己那一份。
客资按门店隔离:成员只能看到与自己所属门店一致的客资。 勾「全门店」= 本门店全部客资(店长);勾「本人」= 本门店内 只看归属人是自己的(销售)。
三个敏感开关默认关闭:查看完整手机号、看金额与成本、可删除记录。 工资单任何情况下只能看自己那一份。
所属门店统一从「系统设置 · 门店配置」读取,这里只能下拉选择,
默认「未分配」。要新增门店,请先到门店配置建档。
| 账号 | 姓名 | 权限 | 所属门店 | 手机号 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ u.用户名 }} |
{{ (u.显示姓名||u.用户名||'?').slice(0,1) }}
{{ u.显示姓名 || '—' }}
我
|
全权
{{ permCount(u) }} 个模块
未授权
{{ u.权限文本 }}
|
{{ u.手机号 || '—' }} | {{ u.启用 ? '已启用' : '已停用' }} | ||
| 暂无账号 | ||||||
{{ kb.current.分类 }}
仅管理层可见
{{ kb.current.状态 }}
{{ kb.current.来源 }} · {{ kb.current.维护人 }}
{{ kb.current.标题 }}
只读 —— 编辑需另勾「知识库(编辑)」权限
{{ kbEditId ? '编辑知识条目' : '新增知识条目' }}
标题必填 · 正文支持 Markdown
{{ kb.gaps.distinct || 0 }}待补问题
{{ kb.gaps.total || 0 }}共被问次数
{{ kb.gaps.done || 0 }}已处理
{{ kb.gaps.days || 30 }} 天统计窗口
这里是员工真问过、AI 没答上来的话,按被问次数排序。每条已经标好该找谁修:
动作没接上找技术、该加同义词改标题、该写内容才归知识库。
加载中…
近 {{ kb.gaps.days || 30 }} 天没有待补问题。
要么员工还没怎么问,要么问的都被答上了。这份清单是实时的 —— 有人问、AI 没答上,这里立刻会出现。
{{ it.kind_label }}
{{ it.digest }}
问过 {{ it.n }} 次
平台有「{{ it.action_title }}」这个动作,这句话本该被它接住({{ kbGapPct(it.score) }})—— 查接线,或看提问人有没有这个动作的权限。
库里有相近内容,只是没搜到 —— 说明标题/说法对不上,加同义词就行,别再录一遍。
库里确实没有这个话题 —— 补一条,正文第一行先给结论(AI 就靠那一句作答)。
另:和「{{ it.hint_title }}」沾一点边({{ kbGapPct(it.hint_score) }}),仅供参考,不要照这个去加例句。
{{ d.kind || '已处理' }}
{{ d.digest }}
{{ d.by || '—' }} · {{ kbTimeText(d.ts_ms) }}
这里是被删掉的知识条目,点「恢复」就能捞回来。
删是软删除 —— 条目从未真的离开库,AI 只是搜不到它。
恢复后分类 / 状态 / 正文都保持删除前的样子,索引立刻生效。
加载中…
回收站是空的。
删过的条目会出现在这里,可以随时恢复。
(当前按「{{ kbCat }}」筛,换个分类看看)
{{ it.分类 }}
{{ it.标题 }}
{{ it.状态 }}
{{ kbTimeText(it.删除时间) }}
{{ it.摘要 }}
恢复后 AI 立刻又能引用它
加载中…
没有匹配的知识条目。
知识库是全平台 AI 的燃料 —— 客资跟进推荐话术、AI 沟通诊断,都从这里取
「我们自己公司的说法」。库越全,AI 越像自己人。
{{ it.分类 }}
AI 提炼
{{ it.标题 }}
{{ it.状态 }}
{{ kbTimeText(it.更新时间) }}
{{ it.摘要 }}
例句决定 AI 把这句话交给谁办。
例句是全体共用的 —— 改一句会影响所有人的路由,所以要改就一次改对、改完回测。
点每行右侧「改例句」维护;改完全体立即生效。
加载中…
例句清单只有管理员能看
没有匹配的动作
{{ it.action }}
{{ it.title || '(无中文标题)' }}
{{ kbRiskText(it.risk) }}
无例句 · AI 听不懂这个动作
听得懂
{{ x }}
别这样
{{ x }}
词条 = AI 还认得的另一个说法。
它只影响搜不搜得到,不影响答不答:在原词之外补同义词,不替换原词。
{{ kbSyn.来源 }}
这些加过、后来删了 —— 别再加回来
{{ a.词 }}→{{ (a.同义词||[]).join('、') }}
{{ a.结果 }}
加载中…
还没有词条
{{ it.词 }}
→
{{ v }}
已停用
现在是免审:店长以上改完立即生效。
现在要审核:改动先落待审({{ kbFix.pending }} 条),管理员点了才生效。
下面是谁改了什么、依据哪句问话。
加载中…
AI 答错时,在答案下面点「这条不对 / 我补充」,改完就出现在这里。
{{ it['结果'] }}
{{ it['标题'] || it['目标条目ID'] || '(无标题)' }}
{{ it['类型'] }} · {{ it['提出人'] }} · {{ kbTimeText(it['提出时间']) }}
依据问句:{{ it['依据']['问句'] }}
加载中…
没有匹配的知识条目。
| 标题 | 分类 | 关联品牌 | 状态 | 权重 | 更新时间 | 维护人 |
|---|---|---|---|---|---|---|
|
AI 提炼{{ it.标题 }}
{{ it.摘要 }}
|
{{ it.分类 }} | {{ kbSplitText(it.关联品牌) }} 缺 | {{ it.状态 || '启用' }} | {{ it.权重 }} | {{ kbTimeText(it.更新时间) }} | {{ it.维护人 || '—' }} |
加载中…
回收站是空的。
近 {{ kb.gaps.days || 30 }} 天没有待补问题。
没有匹配的知识条目。
{{ it.kind_label }}
{{ it.digest }}
问过 {{ it.n }} 次
{{ it.标题 }}
{{ it.摘要 }}
{{ it.分类 }}
AI 提炼
{{ it.状态 }}
权重 {{ it.权重 }}
{{ it.删除人 || '—' }} 删除 · {{ kbTimeText(it.删除时间) }}
{{ kbEditId ? '编辑' : '新建' }}
「{{ kbForm.分类 }}」这一类必须填关联大类 + 关联品牌 ——
不填的话 AI 按品牌对齐时会搜不准,等于录了也没用。
(留空也能提交,后端会收;但这条等于白录)
「{{ kbForm.分类 }}」是受保护分类 —— 只有管理员能写。店长保存会返回
kb_locked。这里只提示、不拦(管理员也要能选)。
适用阶段(可多选)
{{ kb.current.分类 }}
仅管理层
{{ kb.current.状态 }}
只读 —— 编辑需另勾「知识库(编辑)」权限
{{ kb.current.标题 }}
{{ kbSibIdx() < 0 ? '—' : (kbSibIdx() + 1) }} / {{ kb.items.length }}
- {{ t.text }}
回收站:左边挑一条点「恢复」。
左边是 AI 答不出来的真实提问,点「去补一条」直接写。
从左边选一条开始读。
{{ it.title || '(无中文标题)' }}
{{ it.action }}
{{ (it.say||[]).length }} 句 / {{ (it.not_say||[]).length }} 句不该接
没有匹配的动作
{{ egCur.title || egCur.action }}
{{ egCur.action }}
{{ kbRiskText(egCur.risk) }}
说什么会被接住
用员工嘴里的原话,不要写成标题(「查询物料库存」没人会说)。 只读动作的标题不参与打分,所以话必须落在例句里。
{{ x }}
已经 {{ (egCur.say||[]).length }} 句(建议 8 句以内)—— 例句太多会互相抢。
明确不该接住的
这一段是防抢用的 —— 一个动作把别人的话抢走,比它听不懂更伤。 写在这里是反向确认,不会被算进分数。
{{ x }}
试算 改前改后各试一次
点一下看这句话现在被谁接住。改完例句再算一次,对比「动作」有没有变 —— 这是非技术人改例句时唯一的安全网。
{{ egTryKindText(egTryRes.kind) }}
{{ egTryRes.title }}
{{ egTryRes.action }}
{{ egTryConfText(egTryRes.confidence) }}
抽到的槽:
{{ k }}={{ v }}
还缺:
{{ m }}
({{ egTryRes.ask }})
理由:{{ egTryRes.why }}
没有分数条 ——
POST /api/agent/route 的出参只有
kind / action / slots / confidence / title,不含 score,
也没有次优候选。所以这里给的是三档置信(本地直通 / 并列裁决 / 模型判),
不是百分比。要真分数得后端在出参里补 score + candidates。
左边选一个动作,右边维护它的例句。
试搜 输入员工会问的一句话
看这句话能不能搜到正确的那条。同义词宁可少一条,也不许把对的挤走 —— 加完用这里验,看正确那条还在不在第 1。
原句{{ synTryRes.text }}
扩词
{{ synTryRes.notes.join(' · ') }}
查询词
{{ w }}
(没切出实词)
命中 {{ synTryRes.hits.length }} 条
换个说法再试一次
- {{ i + 1 }} {{ h.标题 }} {{ h.分类 }} 命中「{{ h._by }}」
试搜是前端自己拼的:拿
另外
GET /api/kb/synonyms 的词表扩词,
再逐个词打 GET /api/kb?q= 合并去重。
⛔ 后端没有 /api/kb/terms/try 这个端点(卡面原写的那个不存在)。
另外
q 是整短语匹配,整句直接搜会 0 条 —— 所以这里必须拆词。
{{ a.词 }}→
{{ (a.同义词||[]).join('、') }}
{{ a.结果 }}
实测把「报销怎么弄」原来的第 1 条「09.5 出车与报销」挤到第 4,换上来的是
「12.6 商务」「08.5 素材授权」—— 「费用」这个词太泛,扩出去的全是噪音。
判据:同义词宁可少一条,也不许把对的挤走。
{{ it.词 }}
已停用
命中额外 +{{ (it.同义词||[]).length }} 词
{{ v }}
{{ it.备注 || '—' }} · {{ it.维护人 }}
还没有词条。
删除这条知识?
{{ kbDelAsk.标题 }}
- AI 立刻搜不到它 —— 检索按「未删除」过滤
- 行还留在库里,可恢复 —— 不是物理删除,去左边「已删除」点恢复就能捞回来
- 会记入系统日志
kb.delete(谁、何时、哪一条)
加载中…
还没有人改过知识库。
AI 答错时,在答案下面点「这条不对 / 我补充」,改完就出现在这里。
{{ it['结果'] }}
{{ it['标题'] || it['目标条目ID'] || '(无标题)' }}
{{ it['类型'] }}
{{ it['提出人'] }} · {{ kbTimeText(it['提出时间']) }}
· {{ it['分类'] }}
· 审核 {{ it['审核人'] }}:{{ it['审核意见'] }}
依据问句:{{ it['依据']['问句'] }}
原来答的是:{{ it['依据']['原答案'] }}
改前
{{ it['改前正文'] }}
改后
{{ it['补丁']['正文'] }}
管理大类
这里改的是分类清单本身,改完筛选按钮和「新增条目」的下拉立刻跟着变。
最多 12 个字。名称里不能带「价格政策 / 公司制度 / 合同模板」——
这三个是受保护分类(只有管理员能写内容),不能靠起个近似的名字绕过去。
现有大类
{{ catList.length }} 个
{{ c.名称 }}
{{ c.条目数 }} 条
受保护
已停用
仅管理员
还没有分类,先在上面加一个。
改名会把这批条目的分类一起改过来,不会变成孤儿。
停用只是「新增时不再出现」,已有条目照旧能打开、能搜、能改。
{{ kbEdit.mode==='syn' ? (kbEdit.id ? '改词条' : '新增词条') : '改例句' }}
它是键:判断方式是「这个词出现没出现」,所以越短越准(≤4 字最好,最多 12 字)。
在原词之外补,不替换原词。最多 8 个 —— 多一个就可能把对的条目挤走。
⚠️ 只影响「搜不搜得到」,不影响「答不答」。加完最好用员工的原话试问一句。
员工真实会怎么说。一句一行,越像人话越好,别写「查询采购入库」这种系统话。
长得像、但不该交给这个动作的话。写在这里能防止它抢别人的活。
⚠️ 例句是全体共用的:改一句,所有人的这句话都换到别处办。改完请回测。
敏感动作留痕:查看完整手机号、删除业务记录、变更成员权限等动作,
全部记录「谁、何时、对哪条、改前 → 改后」,仅管理员 / BOSS 可查(需求 2.3.3 ③)。
共 {{ auditLogs.length }} 条
加载中…
暂无留痕记录
| 时间 | 操作人 | 动作 | 对象 | 说明 | 变化 |
|---|---|---|---|---|---|
| {{ l.时间 }} | {{ l.姓名 || l.账号 }} | {{ l.动作名 }} | {{ l.对象 || '—' }} | {{ l.说明 || '—' }} | {{ l.改前 || '—' }} → {{ l.改后 || '—' }} — |
我的账号
{{ (user.显示姓名||user.用户名||'?').slice(0,1) }}
{{ user.显示姓名 || user.用户名 }}
@{{ user.用户名 }}
登录账号
{{ user.用户名 }}
身份
{{ myRoleText }}
所属门店
{{ effUser.部门 || '未分配' }}
可见模块
{{ permSummary }}
(还没勾选任何模块,请联系管理员 / BOSS 授权)
客资数据范围
{{ scopeText }}
敏感开关
完整手机号 {{ mySwitch('phone') ? '可看' : '掩码' }} ·
金额与成本 {{ mySwitch('amount') ? '可看' : '隐藏' }} ·
删除 {{ mySwitch('del') ? '可用' : '不可用' }}
版本
{{ appVersion || '—' }}
修改密码
外观
选一套界面配色,点一下即时生效,并记在你的账号上(换设备也跟着)。