旺小宝客户来访分页查询:按 客户 ID / 客户姓名(模糊触发后端 JOIN)/ 来访时间窗 过滤,排序固定 visit_time DESC。每条 visit 直接带 audios 录音列表(含 audioId / fileId / startTime / duration / 签名 fileUrl),问这次来访打了几条录音 / 录音多长 / fileUrl 时不必再调 audio list。只读、不写文件、无副作用。高频命令: xiaobao-cli visit list [--customer-id <id>] [--customer-name <n>] [--from <date>] [--to <date>] [--page N] [--size N]。何时用:用户问今天到访/本周来访列表/最近来访/某客户最近几次来访/上周哪些客户来访/姓张客户什么时候来过/某次到访打了几条录音/录音 fileUrl/盘客完成没;任何看到访名单/接待记录/话术命中的开放式查询。注:customer-id 比 customer-name 精确,先用 xiaobao-cli customer...
Scanned 9/12/2026
Install to Claude Code
npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill wangxiaobao-visit-query --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Wangxiaobao Visit Query?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ahang1598-wangxiaobao-visit-query)More formats (shields.io, HTML) on the badges page.
---
name: wangxiaobao-visit-query
version: 0.1.0
description: "旺小宝客户来访分页查询:按 客户 ID / 客户姓名(模糊触发后端 JOIN)/ 来访时间窗 过滤,排序固定 visit_time DESC。每条 visit 直接带 audios 录音列表(含 audioId / fileId / startTime / duration / 签名 fileUrl),问这次来访打了几条录音 / 录音多长 / fileUrl 时不必再调 audio list。只读、不写文件、无副作用。高频命令: xiaobao-cli visit list [--customer-id <id>] [--customer-name <n>] [--from <date>] [--to <date>] [--page N] [--size N]。何时用:用户问今天到访/本周来访列表/最近来访/某客户最近几次来访/上周哪些客户来访/姓张客户什么时候来过/某次到访打了几条录音/录音 fileUrl/盘客完成没;任何看到访名单/接待记录/话术命中的开放式查询。注:customer-id 比 customer-name 精确,先用 xiaobao-cli customer list 反查 wang_id;要客户画像走 customer-query;要录音元数据走 audio-query。"
metadata:
requires:
bins: ["xiaobao-cli"]
cliHelp: "xiaobao-cli visit --help"
---
# 旺小宝来访分页查询
> **CRITICAL** —— 跑命令前 MUST 先用 Read tool 读取 [`../wangxiaobao-shared/SKILL.md`](../wangxiaobao-shared/SKILL.md)(一份共享文档讲清安装 / 登录 / 选项目 / 错误码 / 输出协议等所有 xiaobao-cli 命令通用的前置约定)。
跑 `xiaobao-cli visit list` 查当前激活项目的来访记录。
## 执行前必读
- 必须有有效 token:先调 `xiaobao-cli auth whoami`;未登录就走 `auth login --no-wait` split-flow(见 wangxiaobao-shared)
- **必须有激活项目**:命令内部自动读,缺失返回 `NO_ACTIVE_PROJECT`
- **数据权限隔离**:跟客户接口一样,按当前用户授权可见顾问范围过滤
- LocalDateTime 格式:`yyyy-MM-dd HH:mm:ss`(空格分隔),CLI 自动转
- **不要**写文件、出报告
---
## 快速索引:意图 → 工具
| 用户意图 | 命令 | 关键参数 |
| ------------------------------ | ----------------------- | --------------------------------------- |
| 列时间窗内的全部来访 | `xiaobao-cli visit list` | `--from` / `--to` |
| 看某客户的来访历史 | `xiaobao-cli customer list` → `xiaobao-cli visit list` | `--customer-id 反查的 wang_id` |
| 按客户名字模糊找来访 | `xiaobao-cli visit list` | `--customer-name 张` |
| **看某次来访的录音详情** | `xiaobao-cli visit list` | 直接读返回里的 `audios[]`(含 fileUrl) |
| 估算总数 | `xiaobao-cli visit list` | `--page 1 --size 1`,只读 `total` |
---
## 核心约束
### 1. 客户名 vs 客户 ID —— 优先 ID,更准更快
用户说"李女士最近几次来访"——**优先**走两步:
1. 调 `xiaobao-cli customer list { customerName: "李女士" }` 反查到 `--customer-id`
2. 调 `xiaobao-cli visit list { customerId: <wang_id> }` 拿来访历史
直接传 `--customer-name` 也能用(后端 JOIN customer_profile 模糊匹配),但:
- 同名客户可能有多个(重名 "李女士"),结果混在一起不好辨认
- JOIN 慢于纯 visit 表查询
### 2. 时间窗:用户没明确说就推断
| 用户说法 | fromDate / toDate |
| ------------ | ------------------------------------------------ |
| "今天到访" | 今天 00:00:00 / 明天 00:00:00 |
| "本周来访" | 周一 00:00:00 / 今天 23:59:59 |
| "上周末" | 上周六 00:00:00 / 本周一 00:00:00 |
| "5 月份" | 2026-05-01 00:00:00 / 2026-06-01 00:00:00 |
| "最近 3 次" | 不传时间窗,只看 `content[]` 前 3 条 |
### 3. 分页:page 从 **1** 开始;size 上限 500
跟其他接口一样。
### 4. 响应字段重点
```jsonc
{
"code": "0",
"data": {
"page": 1, "size": 10, "total": 23,
"content": [
{
"visitId": "...",
"customerId": "1685535452481236993", // = wang_id,可传回 customers 查
"visitTime": "2023-07-30 14:01:03",
"visitCount": 1, // 第几次到访
"visitTimer": 1439184, // 来访总秒数
"audioCount": 3, // 关联录音条数(= audios.length)
"audios": [ // ★ 录音详情列表,按 startTime 升序
{
"audioId": 9001,
"fileId": "abc",
"startTime": "2023-07-30 14:01:15",
"endTime": "2023-07-30 14:08:42",
"duration": 447, // 秒
"fileSize": 3145728,
"hasValid": 1, // 0 无效 / 1 有效
"status": 4, // 0 转存中/1 转文本/2 待分析/3 分析中/4 完成
"userId": 270078834689187840,
"fileUrl": "https://oss.../abc?sign=..." // 18000 秒过期
}
],
"userId": 270078834689187840,
"userName": "兰鸿建", // 实际接待顾问
"belongUserId": ...,
"belongUserName": "兰鸿建", // 客户归属顾问(可能跟接待不同)
"userInfo": { /* 顾问详情 */ },
"pankeStatus": "已完成", // 盘客状态
"isPankeCompleted": 1,
"requireSpeechTotal": 8, "requireSpeechHit": 5,
"salesSpeechTotal": 12, "salesSpeechHit": 9
}
]
}
}
```
CLI 又包一层 → `resp.data.data.content`。
`requireSpeechHitDetail` / `salesSpeechHitDetail` 是 JSON 文本,**默认不展示给用户**
(除非用户明确问"具体哪条话术命中了")。
### 5. 接待 vs 归属:解释差异
- `userId / userName` = **实际接待**(这次来访是谁陪同的)
- `belongUserId / belongUserName` = **客户归属**(客户档案里登记的归属销售)
正常情况两者一致;不一致时可能是:
- 销售 A 不在岗,同事 B 帮忙接待 A 的客户
- 客户重新分配过
用户问"张三接待了几个"——按 `userId == 张三`;问"张三名下客户来访"——按 `belongUserId == 张三`
(**但本 命令当前不支持按 belongUserId 过滤**,需先用 customers 反查再 customerId 过滤)。
---
## 使用场景示例
### 场景 1:今天到访列表
```bash
xiaobao-cli visit list --from "2026-05-13 00:00:00" --to "2026-05-14 00:00:00"
```
渲染:
```
今天共 18 次到访(按时间倒序):
1. 屈哥 · 14:01 · 接待:兰鸿建 · 第 1 次 · 12 分 · 录音 3
2. 曹女士 · 13:45 · 接待:陈平 · 第 2 次 · 25 分 · 录音 2
...
```
### 场景 2:李女士最近 3 次来访
```bash
# step 1: 反查 wang_id
xiaobao-cli customer list --customer-name 李女士 --size 20
# step 2: 假设找到 customerId = 270072120829026305
xiaobao-cli visit list --customer-id 270072120829026305 --page 1 --size 3
```
### 场景 3:上周末来访高峰
```bash
xiaobao-cli visit list --from "2026-05-10 00:00:00" --to "2026-05-12 00:00:00" --page 1 --size 50
```
后处理:按 hour 聚合 → 报告"周日下午 14-16 点是峰值"。
### 场景 4:用客户名直接模糊
```bash
# 不知道具体客户 ID,先用名字模糊
xiaobao-cli visit list --customer-name 张 --from "2026-05-01 00:00:00" --size 20
```
回复:"姓张的客户 5 月来访共 8 次,分布在 3 位客户:张先生(133****0692) 来 3 次..."
### 场景 5:直接看某次到访的录音详情
```bash
xiaobao-cli visit list --customer-id 1685535452481236993 --page 1 --size 5
```
每条 visit 已带 `audios[]`,**不必再调** `xiaobao-cli audio list`:
```
屈哥 · 2023-07-30 14:01:03 · 接待:兰鸿建 · 12 分 · 3 条录音:
1. audioId=9001 · 14:01:15 ~ 14:08:42 · 7 分 · 状态:分析完成
fileUrl: https://oss.../abc?sign=...
2. audioId=9002 · 14:09:00 ~ 14:11:30 · 2 分 · 状态:分析完成
3. audioId=9003 · 14:12:00 ~ 14:15:30 · 3 分 · 状态:分析完成
```
> 想看某条录音的**转录文本**还是要单独调 `xiaobao-cli audio text`,
> `audios[]` 里只有元数据 + 签名 URL,没有 transcript。
---
## 常见错误与排查
- **`error: 'NO_ACTIVE_PROJECT'`** — 跑 `wangxiaobao-switch-project` skill
- **401 / token 过期** — 走 `auth login --no-wait --force` split-flow 重登
- **`total: 0`** — 时间窗内确实没数据,或当前用户授权范围内没有匹配的接待顾问
- **customerName 模糊但没匹到** — 客户名拼写差异("李女士" vs "李小姐");
改用 `xiaobao-cli customer list` 反查精确 customerId
- **接待顾问跟归属顾问不一致** — 正常业务情况(同事代接待),不是 bug;
必要时跟用户解释
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!