Skip to main content
Glama

get_release_items

Retrieve defect and requirement lists associated with a specific PingCode release version. Filter results by work item type to view bugs, stories, or all items.

Instructions

获取某个发布版本关联的缺陷和需求列表。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
release_idYes发布版本 ID(可从发布页面 URL 获取)
project_idYes项目标识,如 LFY
item_typeNo筛选工作项类型:bug=缺陷,story=需求,all=全部(默认)

Implementation Reference

  • Core handler function that retrieves work items associated with a release, groups them by type (bugs, stories, others), resolves assignee names using project members, and formats the output as a categorized Markdown list.
    export async function getReleaseItems(
      releaseId: string,
      projectId: string,
      itemType?: 'bug' | 'story' | 'all'
    ): Promise<{
      success: boolean;
      data?: string;
      error?: string;
    }> {
      try {
        const items = await pingcodeClient.getReleaseWorkItems(
          releaseId,
          projectId,
          itemType
        );
    
        if (items.length === 0) {
          return {
            success: true,
            data: '该发布版本没有关联的工作项',
          };
        }
    
        // 获取当前用户和项目成员
        const currentUser = await pingcodeClient.getCurrentUser();
        const currentUserId = currentUser?.id || '';
        const members = await pingcodeClient.getProjectMembers(projectId);
    
        // 按类型分组 (type 是数字: 5=缺陷, 3=用户故事, 等)
        const bugs = items.filter((i: any) => i.type === 5);
        const stories = items.filter((i: any) => i.type === 3 || i.type === 2);
        const others = items.filter((i: any) => i.type !== 5 && i.type !== 3 && i.type !== 2);
    
        const lines: string[] = [`# 发布版本工作项列表`, '', `共 ${items.length} 项`];
    
        // 辅助函数
        const getId = (item: any) => item.whole_identifier || `#${item.identifier}`;
        
        const getState = (item: any) => {
          if (item.state?.display_name || item.state?.name) {
            return item.state.display_name || item.state.name;
          }
          return STATE_TYPE_MAP[item.state_type] || '未知';
        };
        
        const getAssignee = (item: any) => {
          const assigneeId = typeof item.assignee === 'string' 
            ? item.assignee 
            : item.assignee?._id || item.assignee?.id;
          if (!assigneeId) return '未分配';
          const name = members.get(assigneeId) || '未知';
          return assigneeId === currentUserId ? `${name}(我)` : name;
        };
        
        const formatItem = (item: any) => {
          return `- **${getId(item)}** ${item.title} | ${getState(item)} | ${getAssignee(item)}`;
        };
    
        if (bugs.length > 0) {
          lines.push('', `## 缺陷 (${bugs.length})`, '');
          bugs.forEach((item: any) => lines.push(formatItem(item)));
        }
    
        if (stories.length > 0) {
          lines.push('', `## 需求 (${stories.length})`, '');
          stories.forEach((item: any) => lines.push(formatItem(item)));
        }
    
        if (others.length > 0) {
          lines.push('', `## 其他 (${others.length})`, '');
          others.forEach((item: any) => lines.push(formatItem(item)));
        }
    
        return {
          success: true,
          data: lines.join('\n'),
        };
      } catch (error: any) {
        return {
          success: false,
          error: error.message,
        };
      }
    }
  • Input schema definition for the 'get_release_items' tool, specifying parameters release_id (required), project_id (required), and optional item_type enum.
    {
      name: 'get_release_items',
      description:
        '获取某个发布版本关联的缺陷和需求列表。',
      inputSchema: {
        type: 'object',
        properties: {
          release_id: {
            type: 'string',
            description: '发布版本 ID(可从发布页面 URL 获取)',
          },
          project_id: {
            type: 'string',
            description: '项目标识,如 LFY',
          },
          item_type: {
            type: 'string',
            enum: ['bug', 'story', 'all'],
            description: '筛选工作项类型:bug=缺陷,story=需求,all=全部(默认)',
          },
        },
        required: ['release_id', 'project_id'],
      },
    },
  • src/index.ts:236-252 (registration)
    Registration in the tool call handler switch statement, which extracts arguments and invokes the getReleaseItems handler function.
    case 'get_release_items': {
      const { release_id, project_id, item_type } = args as {
        release_id: string;
        project_id: string;
        item_type?: 'bug' | 'story' | 'all';
      };
      const result = await getReleaseItems(release_id, project_id, item_type);
      return {
        content: [
          {
            type: 'text',
            text: result.success ? result.data! : `错误: ${result.error}`,
          },
        ],
        isError: !result.success,
      };
    }
  • src/index.ts:10-11 (registration)
    Import statement that brings the getReleaseItems function into the main index file for use in tool handling.
    import { getWorkItem, getReleaseItems, searchWorkItems, listReleases, listProjects, updateWorkItemState } from './tools/work-items.js';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ratatatat1/pingcode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server