@wecom/wecom-openclaw-plugin 2026.7.2-beta.0 → 2026.7.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
* tool.ts 的 handleCall 无需任何改动。
|
|
10
10
|
*/
|
|
11
11
|
import { bizErrorInterceptor } from "./biz-error.js";
|
|
12
|
-
|
|
12
|
+
// docAuthErrorInterceptor 已停用:文档授权错误改为透传后台 MCP 返回的错误信息,
|
|
13
|
+
// 不再发送授权引导模板卡片,对齐其他品类错误的表现。实现文件保留以便回滚。
|
|
14
|
+
// import { docAuthErrorInterceptor } from "./doc-auth-error.js";
|
|
13
15
|
import { mediaInterceptor } from "./msg-media.js";
|
|
14
16
|
import { smartpageCreateInterceptor } from "./smartpage-create.js";
|
|
15
17
|
import { smartpageExportInterceptor } from "./smartpage-export.js";
|
|
@@ -19,7 +21,7 @@ import { smartsheetUploadInterceptor } from "./smartsheet-upload.js";
|
|
|
19
21
|
// ============================================================================
|
|
20
22
|
const interceptors = [
|
|
21
23
|
bizErrorInterceptor, // 业务错误码检查(所有 call 生效)
|
|
22
|
-
docAuthErrorInterceptor,
|
|
24
|
+
// docAuthErrorInterceptor, // 已停用:文档授权错误透传原始 MCP 错误信息,不再发送授权卡片
|
|
23
25
|
mediaInterceptor, // get_msg_media base64 拦截
|
|
24
26
|
smartpageCreateInterceptor, // smartpage_create 本地文件读取
|
|
25
27
|
smartpageExportInterceptor, // smartpage_get_export_result content → 本地文件
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wecom-todo
|
|
3
|
-
description:
|
|
3
|
+
description: 企业微信待办事项管理技能,支持创建待办、更新待办、更改用户在待办中的状态、获取待办列表、批量获取待办详情、删除待办。在用户说"帮我创建一个待办"、"把这个任务分派给张三"、"标记待办完成"、"接受/拒绝这个待办"、"把我在这个待办里的状态改成已完成"、"删掉那个待办"、"帮我建个提醒"、"更新一下待办内容"、"把提醒时间改到下周"、"看看这个待办的详情"、"待办分派给谁了"、"看看我有哪些待办"、"列一下我最近的待办"等需要对待办进行读写操作的场景时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 企业微信待办事项管理技能
|
|
@@ -11,382 +11,262 @@ description: 企业微信待办事项管理技能,支持查询待办列表、
|
|
|
11
11
|
|
|
12
12
|
## 概述
|
|
13
13
|
|
|
14
|
-
wecom-todo
|
|
14
|
+
wecom-todo 提供企业微信待办事项的管理能力,包含以下功能:
|
|
15
15
|
|
|
16
|
-
1.
|
|
17
|
-
2.
|
|
18
|
-
3.
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
16
|
+
1. **搜索 userid** - 根据姓名或别名搜索用户的 userid,用于在创建/更新待办、更改用户状态、查询待办列表时把姓名解析为 userid
|
|
17
|
+
2. **创建待办** - 创建新的待办事项,可指定内容、参与人、截止时间和提醒方式
|
|
18
|
+
3. **更新待办** - 修改已有待办的内容、参与人、待办状态、截止时间和提醒方式
|
|
19
|
+
4. **更改用户状态** - 更改某位参与人在某个待办中的状态(拒绝/接受/已完成)
|
|
20
|
+
5. **获取待办列表** - 获取指定用户的待办列表,支持按创建时间和提醒时间过滤
|
|
21
|
+
6. **获取待办详情** - 根据待办 ID 列表批量获取完整信息
|
|
22
|
+
7. **删除待办** - 删除指定的待办事项
|
|
22
23
|
|
|
23
24
|
## 命令调用方式
|
|
24
25
|
|
|
25
26
|
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo <tool_name> '<json格式的入参>'`
|
|
26
27
|
|
|
27
|
-
## 行为策略
|
|
28
|
-
|
|
29
|
-
**查完列表必须查详情**: `get_todo_list` 只返回待办 ID 和状态等概要信息,不包含待办的实际内容和分派人。对用户来说,没有内容的待办列表毫无用处——他们想知道的是"要做什么",而不是一串 ID。因此,每次调用 `get_todo_list` 拿到结果后,都要紧接着用返回的 todo_id 列表调用 `get_todo_detail` 获取完整详情(内容、分派人等),然后再向用户展示。这不是可选步骤,而是完成用户请求的必要环节。
|
|
30
|
-
|
|
31
|
-
**人员 ID 转姓名(关键步骤)**: `get_todo_detail` 返回结果中的 `follower_id` 和 `creator_id` 都是系统内部 ID,直接展示给用户毫无意义——用户不认识这些 ID,只认识姓名。因此在向用户展示待办详情之前,必须先调用 `wecom-contact` 技能获取通讯录,将所有 `follower_id` 和 `creator_id` 匹配为真实姓名。具体做法:
|
|
32
|
-
|
|
33
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'` 获取通讯录,在返回的 userlist 中,用 userid 字段匹配 follower_id / creator_id,取对应的 name。
|
|
34
|
-
|
|
35
|
-
如果通讯录中找不到某个 ID,展示时标注"未知用户(ID: xxx)"即可。
|
|
36
|
-
|
|
37
|
-
**分页未拉完时必须提醒用户**: `get_todo_list` 接口是分页的,不要求一次性拉完所有数据。但如果响应中 `has_more` 为 `true`,说明后面还有待办没有返回——这时你在展示当前结果的同时,必须明确告诉用户"还有更多待办未显示,是否需要继续查看?"。用户可能不知道后面还有数据,如果你不说,他们会以为看到的就是全部,这会导致遗漏重要待办。这是一个容易被忽略但后果严重的点,请务必执行。
|
|
38
|
-
|
|
39
|
-
**重试策略**: 遭遇"返回 HTTP 错误"或"HTTP 请求失败"时,主动重试,最多重试三次。
|
|
40
|
-
|
|
41
28
|
---
|
|
42
29
|
|
|
43
30
|
## 命令详细说明
|
|
44
31
|
|
|
45
|
-
### 1.
|
|
32
|
+
### 1. 搜索 userid (search_todo_userid)
|
|
46
33
|
|
|
47
|
-
|
|
34
|
+
基础接口,根据姓名或别名搜索用户的 userid,用于在创建待办、更新待办时把用户姓名解析为 userid 进行传参。
|
|
48
35
|
|
|
49
36
|
#### 调用方式
|
|
50
37
|
|
|
51
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
38
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo search_todo_userid '<json格式的入参>'`
|
|
52
39
|
|
|
53
40
|
#### 入参说明
|
|
54
41
|
|
|
55
42
|
| 参数 | 类型 | 必填 | 说明 |
|
|
56
43
|
|------|------|------|------|
|
|
57
|
-
| `
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
| `cursor` | string | ❌ | 分页游标,首次请求不传,后续传入上次响应的 `next_cursor` |
|
|
63
|
-
|
|
64
|
-
#### 返回格式
|
|
65
|
-
|
|
66
|
-
```json
|
|
67
|
-
{
|
|
68
|
-
"errcode": 0,
|
|
69
|
-
"errmsg": "ok",
|
|
70
|
-
"index_list": [
|
|
71
|
-
{
|
|
72
|
-
"todo_id": "TODO_ID",
|
|
73
|
-
"todo_status": 1,
|
|
74
|
-
"user_status": 1,
|
|
75
|
-
"creator_id": "CREATOR_ID",
|
|
76
|
-
"remind_time": "2025-06-01 09:00:00",
|
|
77
|
-
"create_time": "2025-01-15 10:30:00",
|
|
78
|
-
"update_time": "2025-01-16 14:20:00"
|
|
79
|
-
}
|
|
80
|
-
],
|
|
81
|
-
"next_cursor": "NEXT_CURSOR",
|
|
82
|
-
"has_more": false
|
|
83
|
-
}
|
|
84
|
-
```
|
|
44
|
+
| `keyword` | string | 是 | 姓名或别名 |
|
|
45
|
+
|
|
46
|
+
#### 调用示例
|
|
47
|
+
|
|
48
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo search_todo_userid '{"keyword": "张三"}'`
|
|
85
49
|
|
|
86
50
|
#### 返回字段说明
|
|
87
51
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
| `index_list[].todo_status` | number | 待办状态:`0`-已完成,`1`-进行中,`2`-已删除 |
|
|
93
|
-
| `index_list[].user_status` | number | 用户状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
94
|
-
| `index_list[].creator_id` | string | 创建人 ID |
|
|
95
|
-
| `index_list[].remind_time` | string | 提醒时间 |
|
|
96
|
-
| `index_list[].create_time` | string | 创建时间 |
|
|
97
|
-
| `index_list[].update_time` | string | 更新时间 |
|
|
98
|
-
| `next_cursor` | string | 下一页游标 |
|
|
99
|
-
| `has_more` | boolean | 是否还有更多记录 |
|
|
100
|
-
|
|
101
|
-
> 列表返回的是待办概要信息(不含内容和分派人)。拿到列表后,必须调用 `get_todo_detail` 获取完整详情再展示给用户。
|
|
52
|
+
- 返回与关键字匹配的用户的 `userid`(可能为多个候选)。
|
|
53
|
+
- 若有多个同名/相似用户,展示候选列表让用户确认后再使用;展示时只用姓名/别名/部门等可读信息区分,**禁止向用户暴露 `userid`**。
|
|
54
|
+
- 拿到的 `userid` 用于 `create_todo` / `update_todo` 的 `follower_list`,仅供内部传参,不在对话中展示。
|
|
55
|
+
- 调用前可先检查对话上下文是否已有该用户的 `userid`,若有则直接复用、无需再次查询;若本接口返回错误(查询失败、无结果等),则改用通讯录 `wecom-contact` 技能搜索(详见注意事项第 2 条)。
|
|
102
56
|
|
|
103
57
|
---
|
|
104
58
|
|
|
105
|
-
### 2.
|
|
59
|
+
### 2. 创建待办 (create_todo)
|
|
106
60
|
|
|
107
|
-
|
|
61
|
+
创建一个新的待办事项,可指定内容、参与人、截止时间和提醒方式。
|
|
108
62
|
|
|
109
63
|
#### 调用方式
|
|
110
64
|
|
|
111
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
65
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo create_todo '<json格式的入参>'`
|
|
112
66
|
|
|
113
67
|
#### 入参说明
|
|
114
68
|
|
|
115
|
-
| 参数 | 类型 | 必填 | 说明
|
|
116
|
-
|
|
117
|
-
| `
|
|
69
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
70
|
+
|------|------|----|-----------------------------------------------------------------|
|
|
71
|
+
| `content` | string | 是 | 待办内容 |
|
|
72
|
+
| `follower_list` | object | 是 | 参与人信息,对象中包含 `followers` 数组,格式见注意事项第 3 条 |
|
|
73
|
+
| `end_time` | string | 条件必填 | 截止时间(到期时间),格式:`YYYY-MM-DD HH:mm:ss`;提醒方式基于此时间计算偏移。当 `remind_type_list` 含非 `0`(即设置了实际提醒)时**必填** |
|
|
74
|
+
| `remind_type_list` | uint32[] | 否 | 提醒方式,相对 `end_time` 计算,可传入多个,取值见注意事项第 4 条 |
|
|
118
75
|
|
|
119
76
|
#### 调用示例
|
|
120
77
|
|
|
121
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
122
|
-
|
|
123
|
-
#### 返回格式
|
|
124
|
-
|
|
125
|
-
```json
|
|
126
|
-
{
|
|
127
|
-
"errcode": 0,
|
|
128
|
-
"errmsg": "ok",
|
|
129
|
-
"data_list": [
|
|
130
|
-
{
|
|
131
|
-
"todo_id": "TODO_ID",
|
|
132
|
-
"todo_status": 1,
|
|
133
|
-
"content": "完成Q2规划文档",
|
|
134
|
-
"follower_list": {
|
|
135
|
-
"followers": [
|
|
136
|
-
{
|
|
137
|
-
"follower_id": "FOLLOWER_ID",
|
|
138
|
-
"follower_status": 1,
|
|
139
|
-
"update_time": "2025-01-16 14:20:00"
|
|
140
|
-
}
|
|
141
|
-
]
|
|
142
|
-
},
|
|
143
|
-
"creator_id": "CREATOR_ID",
|
|
144
|
-
"user_status": 1,
|
|
145
|
-
"remind_time": "2025-06-01 09:00:00",
|
|
146
|
-
"create_time": "2025-01-15 10:30:00",
|
|
147
|
-
"update_time": "2025-01-16 14:20:00"
|
|
148
|
-
}
|
|
149
|
-
]
|
|
150
|
-
}
|
|
151
|
-
```
|
|
78
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo create_todo '{"content": "<待办的内容>", "follower_list": {"followers": [{"follower_id": "FOLLOWER_ID", "follower_status": 1}]}, "end_time": "2025-06-01 09:00:00", "remind_type_list": [3, 7]}'`
|
|
152
79
|
|
|
153
80
|
#### 返回字段说明
|
|
154
81
|
|
|
155
82
|
| 字段 | 类型 | 说明 |
|
|
156
83
|
|------|------|------|
|
|
157
|
-
| `
|
|
158
|
-
| `data_list[].todo_id` | string | 待办 ID |
|
|
159
|
-
| `data_list[].todo_status` | number | 待办状态:`0`-已完成,`1`-进行中,`2`-已删除 |
|
|
160
|
-
| `data_list[].content` | string | 待办内容 |
|
|
161
|
-
| `data_list[].follower_list.followers` | array | 分派人列表 |
|
|
162
|
-
| `data_list[].follower_list.followers[].follower_id` | string | 分派人 ID(即 userid)— **展示前需通过 wecom-contact 转为姓名** |
|
|
163
|
-
| `data_list[].follower_list.followers[].follower_status` | number | 分派人状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
164
|
-
| `data_list[].follower_list.followers[].update_time` | string | 分派人状态更新时间 |
|
|
165
|
-
| `data_list[].creator_id` | string | 创建人 ID — **展示前需通过 wecom-contact 转为姓名** |
|
|
166
|
-
| `data_list[].user_status` | number | 当前用户状态 |
|
|
167
|
-
| `data_list[].remind_time` | string | 提醒时间 |
|
|
168
|
-
| `data_list[].create_time` | string | 创建时间 |
|
|
169
|
-
| `data_list[].update_time` | string | 更新时间 |
|
|
84
|
+
| `todo_id` | string | 新创建的待办唯一 ID |
|
|
170
85
|
|
|
171
86
|
---
|
|
172
87
|
|
|
173
|
-
### 3.
|
|
88
|
+
### 3. 更新待办 (update_todo)
|
|
174
89
|
|
|
175
|
-
|
|
90
|
+
修改已有待办事项的内容、参与人、待办状态、截止时间或提醒方式。
|
|
91
|
+
|
|
92
|
+
> 说明:本接口可更改待办状态(`todo_status`),但**不能更改参与人状态(`follower_status`)**。如需更改当前用户在某个待办中的状态,请使用 `change_todo_user_status`。
|
|
176
93
|
|
|
177
94
|
#### 调用方式
|
|
178
95
|
|
|
179
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
96
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '<json格式的入参>'`
|
|
180
97
|
|
|
181
98
|
#### 入参说明
|
|
182
99
|
|
|
183
|
-
| 参数 | 类型 | 必填 | 说明
|
|
184
|
-
|
|
185
|
-
| `
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
100
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
101
|
+
|------|------|------|----------------------------------------------------------|
|
|
102
|
+
| `todo_id` | string | 是 | 待办 ID |
|
|
103
|
+
| `content` | string | 否 | 新的待办内容 |
|
|
104
|
+
| `follower_list` | object | 否 | 新的参与人信息(全量替换,非追加),对象中包含 `followers` 数组,格式见注意事项第 3 条。若要新增参与人,需先查出现有参与人,合并后一起提交。**本接口不会更改参与人状态(`follower_status`),如需更改用户状态请使用 `change_todo_user_status`** |
|
|
105
|
+
| `todo_status` | uint32 | 否 | 新的待办状态:`0`-已完成,`1`-进行中 |
|
|
106
|
+
| `end_time` | string | 否 | 新的截止时间(到期时间),格式:`YYYY-MM-DD HH:mm:ss`;提醒方式基于此时间计算偏移 |
|
|
107
|
+
| `remind_type_list` | uint32[] | 否 | 新的提醒方式,相对 `end_time` 计算,可传入多个 |
|
|
188
108
|
|
|
189
109
|
#### 调用示例
|
|
190
110
|
|
|
191
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
192
|
-
|
|
193
|
-
#### 返回格式
|
|
194
|
-
|
|
195
|
-
```json
|
|
196
|
-
{
|
|
197
|
-
"errcode": 0,
|
|
198
|
-
"errmsg": "ok",
|
|
199
|
-
"todo_id": "TODO_ID"
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
#### 返回字段说明
|
|
204
|
-
|
|
205
|
-
| 字段 | 类型 | 说明 |
|
|
206
|
-
|------|------|------|
|
|
207
|
-
| `todo_id` | string | 新创建的待办唯一 ID |
|
|
111
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "content": "<待办的内容>", "end_time": "2025-07-01 09:00:00", "remind_type_list": [1]}'`
|
|
208
112
|
|
|
209
113
|
---
|
|
210
114
|
|
|
211
|
-
### 4.
|
|
115
|
+
### 4. 更改用户在某个待办的状态 (change_todo_user_status)
|
|
212
116
|
|
|
213
|
-
|
|
117
|
+
更改某位参与人在某个待办中的状态(拒绝/接受/已完成)。
|
|
214
118
|
|
|
215
119
|
#### 调用方式
|
|
216
120
|
|
|
217
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
121
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo change_todo_user_status '<json格式的入参>'`
|
|
218
122
|
|
|
219
123
|
#### 入参说明
|
|
220
124
|
|
|
221
125
|
| 参数 | 类型 | 必填 | 说明 |
|
|
222
126
|
|------|------|------|------|
|
|
223
|
-
| `todo_id` | string |
|
|
224
|
-
| `
|
|
225
|
-
| `
|
|
226
|
-
| `todo_status` | number | ❌ | 新的待办状态:`0`-已完成,`1`-进行中,`2`-已删除。删除请使用 `delete_todo` |
|
|
227
|
-
| `remind_time` | string | ❌ | 新的提醒时间 |
|
|
127
|
+
| `todo_id` | string | 是 | 待办 ID |
|
|
128
|
+
| `follower_id` | string | 是 | 参与人 `userid`,指定要修改哪一位参与人的状态。来源遵循注意事项第 2 条的 userid 获取规则(上下文已有 → `search_todo_userid` → `wecom-contact` 技能兜底),禁止自行猜测或构造 |
|
|
129
|
+
| `user_status` | uint32 | 是 | 用户状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
228
130
|
|
|
229
131
|
#### 调用示例
|
|
230
132
|
|
|
231
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
232
|
-
|
|
233
|
-
#### 返回格式
|
|
234
|
-
|
|
235
|
-
```json
|
|
236
|
-
{
|
|
237
|
-
"errcode": 0,
|
|
238
|
-
"errmsg": "ok"
|
|
239
|
-
}
|
|
240
|
-
```
|
|
133
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo change_todo_user_status '{"todo_id": "TODO_ID", "follower_id": "FOLLOWER_ID", "user_status": 2}'`
|
|
241
134
|
|
|
242
135
|
---
|
|
243
136
|
|
|
244
|
-
### 5.
|
|
137
|
+
### 5. 获取待办列表 (get_todo_list)
|
|
245
138
|
|
|
246
|
-
|
|
139
|
+
获取指定用户(由 `follower_id` 指定,可为任意用户)通过机器人的待办列表,支持当天前后一个月的待办,可按创建时间、提醒时间、截止时间和待办状态过滤。
|
|
247
140
|
|
|
248
141
|
#### 调用方式
|
|
249
142
|
|
|
250
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
143
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '<json格式的入参>'`
|
|
251
144
|
|
|
252
145
|
#### 入参说明
|
|
253
146
|
|
|
254
|
-
需要遵循 “注意事项”中的格式要求:
|
|
255
|
-
|
|
256
147
|
| 参数 | 类型 | 必填 | 说明 |
|
|
257
148
|
|------|------|------|------|
|
|
258
|
-
| `
|
|
149
|
+
| `follower_id` | string | 是 | 参与人 `userid`,指定要查询哪一位用户的待办列表(可为任意用户),来源遵循注意事项第 2 条的 userid 获取规则,禁止自行猜测或构造 |
|
|
150
|
+
| `create_begin_time` | string | 否 | 创建开始时间 |
|
|
151
|
+
| `create_end_time` | string | 否 | 创建结束时间 |
|
|
152
|
+
| `remind_begin_time` | string | 否 | 提醒开始时间 |
|
|
153
|
+
| `remind_end_time` | string | 否 | 提醒结束时间 |
|
|
154
|
+
| `deadline_begin_time` | string | 否 | 截止开始时间 |
|
|
155
|
+
| `deadline_end_time` | string | 否 | 截止结束时间 |
|
|
156
|
+
| `todo_status` | uint32 | 否 | 待办状态:`0`-已完成,`1`-进行中 |
|
|
157
|
+
| `limit` | uint32 | 否 | 最大返回数量,默认为 10,最大为 20 |
|
|
158
|
+
| `cursor` | string | 否 | 游标,用于分页 |
|
|
159
|
+
|
|
160
|
+
> **查询时间范围限制**:
|
|
161
|
+
> - 用于筛选的时间(创建时间、提醒时间、截止时间)必须落在当天前后 30 天以内。
|
|
162
|
+
> - 若仅按 `todo_status` 筛选而未传任何时间范围,则默认按「创建时间在当天前后 30 天内」查询。
|
|
259
163
|
|
|
260
164
|
#### 调用示例
|
|
261
165
|
|
|
262
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
263
|
-
|
|
264
|
-
#### 返回格式
|
|
166
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{"follower_id": "FOLLOWER_ID", "create_begin_time": "2025-06-01 00:00:00", "create_end_time": "2025-06-30 23:59:59", "todo_status": 1, "limit": 20}'`
|
|
265
167
|
|
|
266
|
-
|
|
267
|
-
{
|
|
268
|
-
"errcode": 0,
|
|
269
|
-
"errmsg": "ok"
|
|
270
|
-
}
|
|
271
|
-
```
|
|
168
|
+
#### 返回字段说明
|
|
272
169
|
|
|
273
|
-
|
|
274
|
-
|
|
170
|
+
- 返回指定用户(`follower_id`)的待办列表,以及用于分页的游标。
|
|
171
|
+
- 拿到的 `todo_id` 可用于 `get_todo_detail` / `update_todo` / `delete_todo`,仅供内部传参,**禁止向用户暴露**。
|
|
275
172
|
|
|
276
173
|
---
|
|
277
174
|
|
|
278
|
-
### 6.
|
|
175
|
+
### 6. 获取待办详情 (get_todo_detail)
|
|
279
176
|
|
|
280
|
-
|
|
177
|
+
根据待办 ID 列表批量查询完整详情,包含待办内容和参与人信息。
|
|
281
178
|
|
|
282
179
|
#### 调用方式
|
|
283
180
|
|
|
284
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
181
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '<json格式的入参>'`
|
|
285
182
|
|
|
286
183
|
#### 入参说明
|
|
287
184
|
|
|
288
|
-
需要遵循 “注意事项”中的格式要求:
|
|
289
|
-
|
|
290
185
|
| 参数 | 类型 | 必填 | 说明 |
|
|
291
186
|
|------|------|------|------|
|
|
292
|
-
| `
|
|
293
|
-
| `user_status` | number | ✅ | 用户状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
187
|
+
| `todo_id_list` | string[] | 是 | 待办 ID 列表,至少 1 个,最多 20 个 |
|
|
294
188
|
|
|
295
189
|
#### 调用示例
|
|
296
190
|
|
|
297
|
-
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo
|
|
298
|
-
|
|
299
|
-
#### 返回格式
|
|
300
|
-
|
|
301
|
-
```json
|
|
302
|
-
{
|
|
303
|
-
"errcode": 0,
|
|
304
|
-
"errmsg": "ok"
|
|
305
|
-
}
|
|
306
|
-
```
|
|
191
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID_1", "TODO_ID_2"]}'`
|
|
307
192
|
|
|
308
193
|
#### 返回字段说明
|
|
309
194
|
|
|
310
|
-
| 字段
|
|
311
|
-
|
|
312
|
-
| `
|
|
313
|
-
| `
|
|
195
|
+
| 字段 | 类型 | 说明 |
|
|
196
|
+
|---------------------------------------------------------|------|-----------------------------------|
|
|
197
|
+
| `data_list` | array | 待办详情列表,最多 20 条 |
|
|
198
|
+
| `data_list[].todo_id` | string | 待办 ID |
|
|
199
|
+
| `data_list[].todo_status` | number | 待办状态:`0`-已完成,`1`-进行中,`2`-已删除 |
|
|
200
|
+
| `data_list[].content` | string | 待办内容 |
|
|
201
|
+
| `data_list[].follower_list` | object | 参与人列表 |
|
|
202
|
+
| `data_list[].follower_list.followers[].follower_id` | string | 参与人 ID(即 userid) |
|
|
203
|
+
| `data_list[].follower_list.followers[].name` | string | 参与人姓名 |
|
|
204
|
+
| `data_list[].follower_list.followers[].follower_status` | number | 参与人状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
205
|
+
| `data_list[].follower_list.followers[].update_time` | string | 参与人状态更新时间 |
|
|
206
|
+
| `data_list[].creator_id` | string | 创建人 ID(即 userid) |
|
|
207
|
+
| `data_list[].user_status` | number | 当前用户在该待办中的状态:`0`-拒绝,`1`-接受,`2`-已完成 |
|
|
208
|
+
| `data_list[].end_time` | string | 截止时间(到期时间) |
|
|
209
|
+
| `data_list[].remind_type_list` | array | 提醒方式列表 |
|
|
210
|
+
| `data_list[].create_time` | string | 创建时间 |
|
|
211
|
+
| `data_list[].update_time` | string | 更新时间 |
|
|
314
212
|
|
|
315
213
|
---
|
|
316
214
|
|
|
317
|
-
|
|
215
|
+
### 7. 删除待办 (delete_todo)
|
|
216
|
+
|
|
217
|
+
删除指定的待办事项。
|
|
218
|
+
|
|
219
|
+
#### 调用方式
|
|
220
|
+
|
|
221
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo delete_todo '<json格式的入参>'`
|
|
222
|
+
|
|
223
|
+
#### 入参说明
|
|
318
224
|
|
|
319
|
-
|
|
225
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
226
|
+
|------|------|------|------|
|
|
227
|
+
| `todo_id` | string | 是 | 待办 ID |
|
|
320
228
|
|
|
321
|
-
|
|
322
|
-
| ------ | -------- | -------- |
|
|
323
|
-
| 工作流 1:查看待办列表 | "看看我最近的待办" | 标准三步:get_todo_list → get_todo_detail → contact 转姓名;检查 has_more 分页 |
|
|
324
|
-
| 工作流 2:按时间范围查询 | "这个月创建的待办有哪些?" | 传入 create_begin_time / create_end_time 过滤,后续同工作流 1 |
|
|
325
|
-
| 工作流 3:创建待办并分派 | "帮我创建一个待办,让张三完成需求文档" | 先通过 wecom-contact 查 userid,再 create_todo 带 follower_list |
|
|
326
|
-
| 工作流 4:标记待办完成 | "把这个待办标记为完成" | 区分场景 A(改 todo_status=0)和场景 B(改 user_status=2) |
|
|
327
|
-
| 工作流 5:更新待办 | "把提醒时间改到下周五" | 先查列表+详情定位目标,再 update_todo |
|
|
328
|
-
| 工作流 6:删除待办 | "删掉那个待办" | 删除前必须向用户确认,不可撤销 |
|
|
329
|
-
| 工作流 7:分页获取 | 待办数量超过单页上限 | 通过 cursor 循环拉取,未拉完必须提醒用户 |
|
|
229
|
+
#### 调用示例
|
|
330
230
|
|
|
231
|
+
使用 `wecom_mcp` tool 调用 `wecom_mcp call todo delete_todo '{"todo_id": "TODO_ID"}'`
|
|
331
232
|
|
|
332
233
|
---
|
|
333
234
|
|
|
334
235
|
## 注意事项
|
|
335
236
|
|
|
336
237
|
1. **todo_id 来源规则**
|
|
337
|
-
- `todo_id`
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
-
|
|
345
|
-
|
|
346
|
-
3.
|
|
347
|
-
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
-
|
|
359
|
-
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
```
|
|
373
|
-
> `follower_id` 即 userid,需要通过 `wecom-contact` 查询获取,禁止自行猜测或构造。
|
|
374
|
-
|
|
375
|
-
7. **破坏性操作确认**
|
|
376
|
-
- 删除待办(`delete_todo`)前必须向用户确认
|
|
377
|
-
- 变更状态为"拒绝"(`user_status=0`)前建议向用户确认
|
|
378
|
-
|
|
379
|
-
8. **必须查详情**
|
|
380
|
-
- `get_todo_list` 返回的是概要信息(不含内容和分派人),拿到列表后必须紧接着调用 `get_todo_detail` 获取完整内容再展示给用户,不要只展示列表概要
|
|
381
|
-
|
|
382
|
-
9. **分页未拉完必须提醒**
|
|
383
|
-
- 如果返回的 `has_more` 为 `true`,在向用户展示结果时必须明确说明"还有更多待办未显示"并询问用户是否需要继续查看
|
|
384
|
-
|
|
385
|
-
10. **单次详情上限**
|
|
386
|
-
- `todo_id_list` 最多传 20 个 ID,超过需要分批请求
|
|
387
|
-
|
|
388
|
-
11. **错误处理**
|
|
389
|
-
- 若 `errcode` 不为 `0`,说明接口调用失败,告知用户 `errmsg` 中的错误信息
|
|
390
|
-
|
|
391
|
-
12. **通讯录查询**
|
|
392
|
-
- 涉及分派人时,需先通过 `wecom-contact` 技能的 `get_userlist` 接口获取全量通讯录成员,再按姓名/别名本地筛选匹配出对应的 `userid`。该接口无入参,返回当前用户可见范围内的成员列表(含 `userid`, `name`, `alias`)
|
|
238
|
+
- `todo_id` 可来自 `create_todo` 返回的结果,或 `get_todo_list` 查询到的列表,请务必保存好,禁止自行推测或构造
|
|
239
|
+
|
|
240
|
+
2. **userid 来源与隐私规则**
|
|
241
|
+
- 分派待办时,`follower_list` 中的 `follower_id` 即 `userid`,按以下优先级获取,禁止根据用户姓名自行猜测或构造 userid:
|
|
242
|
+
1. **对话上下文已有**:若对话上下文中已经提到对应用户的 `userid`,直接使用,无需再次查询
|
|
243
|
+
2. **search_todo_userid 查询**:若上下文中没有,则可先询问用户在企业内的用户名称(通常是姓名),再通过 `search_todo_userid` 接口按姓名/别名查询获取
|
|
244
|
+
3. **通讯录技能兜底**:若 `search_todo_userid` 返回错误(如当前企业不适用等),则改用通讯录 `wecom-contact` 技能搜索获取 `userid`
|
|
245
|
+
- `userid` 属于敏感标识,仅用于接口传参,**禁止在回复或候选列表中向用户展示**;需要让用户区分人员时,只展示姓名/别名/部门等可读信息
|
|
246
|
+
|
|
247
|
+
3. **follower_list 格式说明**
|
|
248
|
+
- 作为入参时,`follower_list` 为对象,内含 `followers` 数组,格式如下:
|
|
249
|
+
```json
|
|
250
|
+
"follower_list": {
|
|
251
|
+
"followers": [
|
|
252
|
+
{
|
|
253
|
+
"follower_id": "FOLLOWER_ID",
|
|
254
|
+
"follower_status": 1
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
- `follower_id` 即用户的 `userid`,其来源遵循上文「userid 来源与隐私规则」的优先级(上下文已有 → `search_todo_userid` → `wecom-contact` 技能兜底),禁止自行猜测或构造
|
|
260
|
+
- `follower_status` 为参与人状态:`0`-拒绝,`1`-接受,`2`-已完成;该字段仅在 `create_todo` 中生效
|
|
261
|
+
- 在 `update_todo` 中为全量替换(非追加):若要新增参与人,需先用 `get_todo_detail` 查出现有参与人,合并后一并提交;`update_todo` **不会更改参与人状态(`follower_status`)**,如需更改当前用户在某个待办中的状态,请使用 `change_todo_user_status`
|
|
262
|
+
|
|
263
|
+
4. **remind_type_list 提醒方式取值**
|
|
264
|
+
|
|
265
|
+
`remind_type_list` 是一个 uint32 数组,可同时传入多个提醒:
|
|
266
|
+
|
|
267
|
+
| 值 | 含义 | 值 | 含义 |
|
|
268
|
+
|----|------|----|------|
|
|
269
|
+
| `0` | 不提醒 | `6` | 提前 2 小时 |
|
|
270
|
+
| `1` | 到期时 | `7` | 提前 1 天 |
|
|
271
|
+
| `3` | 提前 15 分钟 | `8` | 提前 2 天 |
|
|
272
|
+
| `5` | 提前 1 小时 | `9` | 提前 1 周 |
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
# 典型工作流
|
|
2
|
-
|
|
3
|
-
### 工作流 1:查看待办列表(标准三步流程)
|
|
4
|
-
|
|
5
|
-
**用户意图**:"看看我最近的待办" / "我有哪些待办事项?" / "我还有多少事要做?"
|
|
6
|
-
|
|
7
|
-
**步骤:**
|
|
8
|
-
|
|
9
|
-
1. **获取待办列表**(只有 ID 和状态,没有内容):使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{}'`
|
|
10
|
-
|
|
11
|
-
2. **用返回的 todo_id 列表获取完整详情**(禁止跳过!):使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["返回的TODO_ID_1", "返回的TODO_ID_2"]}'`
|
|
12
|
-
|
|
13
|
-
3. **通过 wecom-contact 获取通讯录**,将 follower_id / creator_id 转为姓名:使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
|
|
14
|
-
|
|
15
|
-
用返回的 userlist 中的 userid 匹配 follower_id 和 creator_id,取 name 字段作为展示姓名。
|
|
16
|
-
|
|
17
|
-
4. **检查分页**:检查第一步返回的 `has_more` 字段。如果为 `true`,在展示结果时必须提醒用户:"以上是部分待办,还有更多待办未显示,需要我继续查看吗?"
|
|
18
|
-
|
|
19
|
-
**展示格式(分派人和创建人必须显示为姓名,不是 ID):**
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
📋 您当前的待办事项(共 3 项)
|
|
23
|
-
|
|
24
|
-
1. 🔵 完成Q2规划文档
|
|
25
|
-
- 待办状态:进行中 | 我的状态:已接受
|
|
26
|
-
- 提醒时间:2025-06-01 09:00
|
|
27
|
-
- 分派人:张三、李四
|
|
28
|
-
- 创建时间:2025-01-15
|
|
29
|
-
|
|
30
|
-
2. 🔵 提交周报
|
|
31
|
-
- 待办状态:进行中 | 我的状态:已接受
|
|
32
|
-
- 提醒时间:2025-03-17 18:00
|
|
33
|
-
- 创建时间:2025-03-10
|
|
34
|
-
|
|
35
|
-
3. ☑️ 代码评审
|
|
36
|
-
- 待办状态:已完成 | 我的状态:已完成
|
|
37
|
-
- 创建时间:2025-03-01
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
### 工作流 2:按时间范围查询待办
|
|
43
|
-
|
|
44
|
-
**用户意图**:"这个月创建的待办有哪些?"
|
|
45
|
-
|
|
46
|
-
**步骤:**
|
|
47
|
-
|
|
48
|
-
1. **按时间过滤获取列表**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{"create_begin_time": "2025-03-01 00:00:00", "create_end_time": "2025-03-31 23:59:59"}'`
|
|
49
|
-
|
|
50
|
-
2. **获取详情**(同工作流 1 的第 2、3 步)。
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
### 工作流 3:创建待办并分派给同事
|
|
55
|
-
|
|
56
|
-
**用户意图**:"帮我创建一个待办,让张三下周一前完成需求文档"
|
|
57
|
-
|
|
58
|
-
**步骤:**
|
|
59
|
-
|
|
60
|
-
1. **通讯录查询**:通过 wecom-contact 技能查询张三的 userid,在返回结果中筛选姓名为"张三"的成员,获取其 userid。使用 `wecom_mcp` tool 调用 `wecom_mcp call contact get_userlist '{}'`
|
|
61
|
-
|
|
62
|
-
2. **创建待办并分派**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo create_todo '{"content": "<待办的内容>", "follower_list": {"followers": [{"follower_id": "zhangsan", "follower_status": 1}]}, "remind_time": "2025-03-24 09:00:00"}'`
|
|
63
|
-
|
|
64
|
-
3. **展示结果**:
|
|
65
|
-
```
|
|
66
|
-
✅ 待办创建成功!
|
|
67
|
-
|
|
68
|
-
📝 内容:完成需求文档
|
|
69
|
-
👥 分派人:张三
|
|
70
|
-
⏰ 提醒时间:2025-03-24 09:00
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
> `follower_id` 必须来自 `wecom-contact` 技能的 `get_userlist` 接口返回的 `userid`,禁止自行猜测。若搜索结果有多个同名人员,需展示候选列表让用户确认。
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
### 工作流 4:标记待办完成
|
|
78
|
-
|
|
79
|
-
需要区分两种场景:**标记待办本身完成**(改 `todo_status`)和**标记我的参与状态为完成**(改 `user_status`)。
|
|
80
|
-
|
|
81
|
-
#### 场景 A:标记待办本身完成
|
|
82
|
-
|
|
83
|
-
**用户意图**:"把'完成Q2规划文档'这个待办标记为完成" / "关闭这个待办"
|
|
84
|
-
|
|
85
|
-
1. **查找目标待办**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{}'`
|
|
86
|
-
2. **获取详情确认**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}'`
|
|
87
|
-
3. **将待办状态改为已完成**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "todo_status": 0}'`
|
|
88
|
-
|
|
89
|
-
#### 场景 B:标记我的参与状态为完成
|
|
90
|
-
|
|
91
|
-
**用户意图**:"我已经完成了这个待办" / "标记我的部分为完成"
|
|
92
|
-
|
|
93
|
-
1. **查找目标待办**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{}'`
|
|
94
|
-
2. **获取详情确认**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}'`
|
|
95
|
-
3. **变更当前用户的参与状态为已完成**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo change_todo_user_status '{"todo_id": "TODO_ID", "user_status": 2}'`
|
|
96
|
-
|
|
97
|
-
> **如何判断用户意图:** 如果用户说"标记完成"且该待办是自己创建的、没有其他分派人,通常指场景 A(标记待办本身完成)。如果该待办有多个参与人,用户可能只是想标记自己那部分完成(场景 B)。不确定时应向用户确认。
|
|
98
|
-
|
|
99
|
-
> 用户提供的是待办内容描述而非 ID,所以需要先通过 `get_todo_list` 和 `get_todo_detail` 查找再匹配。匹配到多个相似待办时,列出候选项让用户确认。
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
### 工作流 5:更新待办内容或提醒时间
|
|
104
|
-
|
|
105
|
-
**用户意图**:"把那个需求文档的待办提醒时间改到下周五"
|
|
106
|
-
|
|
107
|
-
**步骤:**
|
|
108
|
-
|
|
109
|
-
1. **查找目标待办**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{}'`
|
|
110
|
-
|
|
111
|
-
再查详情:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID_1", "TODO_ID_2"]}'`
|
|
112
|
-
|
|
113
|
-
2. **确认目标后更新**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo update_todo '{"todo_id": "TODO_ID", "remind_time": "2025-03-28 09:00:00"}'`
|
|
114
|
-
|
|
115
|
-
3. **展示结果**:
|
|
116
|
-
```
|
|
117
|
-
✅ 待办已更新!
|
|
118
|
-
|
|
119
|
-
📝 内容:完成需求文档
|
|
120
|
-
⏰ 新提醒时间:2025-03-28 09:00
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
### 工作流 6:删除待办
|
|
126
|
-
|
|
127
|
-
**用户意图**:"删掉'代码评审'那个待办"
|
|
128
|
-
|
|
129
|
-
**步骤:**
|
|
130
|
-
|
|
131
|
-
1. **查找目标待办**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{}'`
|
|
132
|
-
|
|
133
|
-
再查详情:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_detail '{"todo_id_list": ["TODO_ID"]}'`
|
|
134
|
-
|
|
135
|
-
2. **向用户确认后删除**:使用 `wecom_mcp` tool 调用 `wecom_mcp call todo delete_todo '{"todo_id": "TODO_ID"}'`
|
|
136
|
-
|
|
137
|
-
3. **展示结果**:
|
|
138
|
-
```
|
|
139
|
-
✅ 待办已删除:代码评审
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
> 删除前必须向用户确认,确认措辞示例:"确认删除待办'代码评审'吗?删除后不可恢复。"
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
### 工作流 7:分页获取大量待办
|
|
147
|
-
|
|
148
|
-
当待办数量超过单页上限时,通过 `cursor` 循环分页拉取:
|
|
149
|
-
|
|
150
|
-
- 首次请求(不传 cursor):使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{"limit": 20}'`
|
|
151
|
-
|
|
152
|
-
如果没有拉取完,还有更多的待办,会返回 has_more=true, next_cursor="CURSOR_1"
|
|
153
|
-
|
|
154
|
-
- 第二次请求(传入上次的 next_cursor):使用 `wecom_mcp` tool 调用 `wecom_mcp call todo get_todo_list '{"limit": 20, "cursor": "CURSOR_1"}'`
|
|
155
|
-
|
|
156
|
-
返回 has_more=false,拉取完毕
|
|
157
|
-
|
|
158
|
-
**分页规则:**
|
|
159
|
-
- 首次请求不传 `cursor`
|
|
160
|
-
- `has_more` 为 `true` 时,将 `next_cursor` 作为下次请求的 `cursor` 传入
|
|
161
|
-
- `has_more` 为 `false` 时停止请求
|
|
162
|
-
- 分页过程中时间过滤参数保持不变
|
|
163
|
-
- **如果选择不继续翻页(比如当前页数据已经够用),必须告诉用户还有更多待办未显示,问用户是否需要继续查看**
|