Skip to content

Commit 132dc62

Browse files
committed
feat: enhance work item management with new detail retrieval and readability features
- Introduced `get_task_detail` method to fetch complete details of a work item, including user-friendly field names. - Removed the deprecated `filter_tasks` method, consolidating functionality into `get_tasks`. - Enhanced `get_tasks` to support improved readability features, automatically converting user-related fields to names. - Updated documentation to reflect changes in API methods and added examples for new features. - Implemented caching mechanisms for user and work item data to optimize performance and reduce API calls.
1 parent 0e5705f commit 132dc62

File tree

10 files changed

+1082
-207
lines changed

10 files changed

+1082
-207
lines changed

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ src/
7272
- **架构设计**:考虑代码的可维护性、可扩展性和性能需求
7373
- **版本控制**:编写有意义的提交信息,保持逻辑相关的更改在同一提交中
7474
- **异常处理**:正确处理边缘情况和错误,提供有用的错误信息
75+
- **实际调用原则**:如果涉及api调用接口开发可以在scripts目录中实现简单测试脚本,确保接口调用正确
7576

7677
---
7778

README.md

Lines changed: 66 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121

2222
| 工具名 | 功能描述 | 示例用法 |
2323
|--------|---------|---------|
24+
| `list_projects` | 列出所有可用项目 | "有哪些可用的飞书项目?" |
2425
| `create_task` | 创建新的工作项 | "帮我创建一个 P0 优先级的 Bug:登录页面崩溃" |
25-
| `get_active_tasks` | 获取活跃的工作项(未完成状态| "查看当前有哪些进行中的任务" |
26-
| `filter_tasks` | 高级过滤查询 | "找出所有张三负责的 P0 任务" |
26+
| `get_tasks` | 获取工作项列表(支持过滤| "查看当前有哪些进行中的任务" |
27+
| `get_task_detail` | 获取单个工作项完整详情 | "查看任务 12345 的详细信息" |
2728
| `update_task` | 更新工作项 | "把任务 12345 的状态改为已完成" |
2829
| `get_task_options` | 获取字段可用选项 | "状态字段有哪些可选值?" |
2930

@@ -33,8 +34,9 @@
3334

3435
```
3536
参数:
36-
- project_key: 项目空间 Key (必填)
3737
- name: 工作项标题 (必填)
38+
- project: 项目标识符(可选,支持项目名称或 project_key)
39+
- work_item_type: 工作项类型(可选),如 "需求管理"、"Issue管理"
3840
- priority: 优先级,可选 P0/P1/P2/P3,默认 P2
3941
- description: 描述
4042
- assignee: 负责人(姓名或邮箱)
@@ -44,55 +46,63 @@
4446

4547
**使用示例:**
4648
```
47-
用户: 帮我在 project_xxx 创建一个任务"修复首页加载慢的问题",优先级 P1,指派给张三
48-
AI: 调用 create_task(project_key="project_xxx", name="修复首页加载慢的问题", priority="P1", assignee="张三")
49+
用户: 帮我创建一个任务"修复首页加载慢的问题",优先级 P1,指派给张三
50+
AI: 调用 create_task(name="修复首页加载慢的问题", priority="P1", assignee="张三")
4951
```
5052

51-
#### 2. get_active_tasks - 获取活跃任务
53+
#### 2. get_tasks - 获取工作项列表
5254

5355
```
5456
参数:
55-
- project_key: 项目空间 Key (必填)
56-
- page_size: 返回数量,默认 20,最大 100
57+
- project: 项目标识符(可选)
58+
- work_item_type: 工作项类型(可选)
59+
- name_keyword: 名称关键词搜索(推荐)
60+
- status: 状态过滤,多个用逗号分隔,如 "待处理,进行中"
61+
- priority: 优先级过滤,多个用逗号分隔,如 "P0,P1"
62+
- owner: 负责人过滤(姓名或邮箱)
63+
- related_to: 关联工作项 ID 或名称
64+
- page_num: 页码,从 1 开始
65+
- page_size: 每页数量,默认 50
5766
5867
返回: JSON 格式的工作项列表
5968
```
6069

6170
**使用示例:**
6271
```
63-
用户: 看看 project_xxx 里有哪些正在进行的任务
64-
AI: 调用 get_active_tasks(project_key="project_xxx")
72+
用户: 找出所有 P0 优先级的待处理任务
73+
AI: 调用 get_tasks(status="待处理", priority="P0")
74+
75+
用户: 李四负责的进行中任务有哪些
76+
AI: 调用 get_tasks(status="进行中", owner="李四")
77+
78+
用户: 搜索包含 "登录" 关键词的任务
79+
AI: 调用 get_tasks(name_keyword="登录")
6580
```
6681

67-
#### 3. filter_tasks - 高级过滤查询
82+
#### 3. get_task_detail - 获取工作项详情
6883

6984
```
7085
参数:
71-
- project_key: 项目空间 Key (必填)
72-
- status: 状态过滤,多个用逗号分隔,如 "待处理,进行中"
73-
- priority: 优先级过滤,多个用逗号分隔,如 "P0,P1"
74-
- owner: 负责人过滤(姓名或邮箱)
75-
- page_num: 页码,从 1 开始
76-
- page_size: 每页数量,默认 20
86+
- issue_id: 工作项 ID (必填)
87+
- project: 项目标识符(可选)
88+
- work_item_type: 工作项类型(可选)
7789
78-
返回: JSON 格式的过滤结果
90+
返回: JSON 格式的完整工作项详情
7991
```
8092

8193
**使用示例:**
8294
```
83-
用户: 找出所有 P0 优先级的待处理任务
84-
AI: 调用 filter_tasks(project_key="project_xxx", status="待处理", priority="P0")
85-
86-
用户: 李四负责的进行中任务有哪些
87-
AI: 调用 filter_tasks(project_key="project_xxx", status="进行中", owner="李四")
95+
用户: 查看任务 12345 的详细信息
96+
AI: 调用 get_task_detail(issue_id=12345)
8897
```
8998

9099
#### 4. update_task - 更新工作项
91100

92101
```
93102
参数:
94-
- project_key: 项目空间 Key (必填)
95103
- issue_id: 工作项 ID (必填)
104+
- project: 项目标识符(可选)
105+
- work_item_type: 工作项类型(可选)
96106
- name: 新标题
97107
- priority: 新优先级
98108
- description: 新描述
@@ -105,29 +115,55 @@ AI: 调用 filter_tasks(project_key="project_xxx", status="进行中", owner="
105115
**使用示例:**
106116
```
107117
用户: 把任务 12345 的状态改为已完成
108-
AI: 调用 update_task(project_key="project_xxx", issue_id=12345, status="已完成")
118+
AI: 调用 update_task(issue_id=12345, status="已完成")
109119
110120
用户: 把任务 12345 的优先级提升到 P0,并转给王五
111-
AI: 调用 update_task(project_key="project_xxx", issue_id=12345, priority="P0", assignee="王五")
121+
AI: 调用 update_task(issue_id=12345, priority="P0", assignee="王五")
112122
```
113123

114124
#### 5. get_task_options - 获取字段可用选项
115125

116126
```
117127
参数:
118-
- project_key: 项目空间 Key (必填)
119-
- field_name: 字段名称,如 "status", "priority"
128+
- field_name: 字段名称,如 "status", "priority" (必填)
129+
- project: 项目标识符(可选)
130+
- work_item_type: 工作项类型(可选)
120131
121132
返回: JSON 格式的选项列表
122133
```
123134

124135
**使用示例:**
125136
```
126137
用户: 状态字段有哪些可选值
127-
AI: 调用 get_task_options(project_key="project_xxx", field_name="status")
128-
返回: {"field": "status", "options": {"待处理": "opt_1", "进行中": "opt_2", "已完成": "opt_3"}}
138+
AI: 调用 get_task_options(field_name="status")
139+
返回: {"field": "status", "options": {"待处理": "opt_1", "进行中": "opt_2", "已完成": "opt_3"}}
129140
```
130141

142+
### ✨ 可读性特性
143+
144+
为了提升用户体验,本系统对工作项数据进行了智能可读性转换:
145+
146+
1. **`get_tasks` 列表视图**
147+
- 自动提取负责人、状态、优先级等关键字段的可读标签
148+
- 用户相关字段(负责人)显示为人名而非内部 ID
149+
- 返回简化格式,节省 Token 消耗
150+
151+
2. **`get_task_detail` 详情视图**
152+
- 返回完整的工作项详情,包含所有字段
153+
- 自动转换用户字段为人名(负责人、创建者、更新者等)
154+
-`readable_fields` 字段中提供所有字段的可读版本
155+
- 为常用字段提供顶级别名(`readable_owner`, `readable_creator` 等)
156+
157+
3. **智能字段解析**
158+
- 自动处理多种字段格式(列表、字典、选项等)
159+
- 支持复杂字段值的可读提取
160+
- 保持原始数据完整,仅添加可读增强
161+
162+
**示例对比**
163+
- 原始数据:`"owner": [{"name": "张三", "user_key": "u_123"}]`
164+
- 可读版本:`"owner": "张三"` (在 `get_tasks` 中)
165+
- 增强详情:包含原始数据和 `"readable_owner": "张三"` (在 `get_task_detail` 中)
166+
131167
## 🚀 快速开始
132168

133169
### 方式一:通过 uv tool install(推荐,最简单)

0 commit comments

Comments
 (0)