flipped-aurora/gin-vue-admin · error

获取成员ID列表失败: %w

Error message

获取成员ID列表失败: %w

What it means

Wrap of an upstream error from a GET request that resolves the member ID list for a dept or position (getUpstream on the configured endpoint). If the backend cannot return the []uint member IDs, the query tool aborts with this message.

Source

Thrown at server/mcp/org_member_query.go:103

	}

	var endpoint, idParam string
	switch dimension {
	case "department":
		endpoint, idParam = "/department/getDepartmentUsers", "deptId"
	case "position":
		endpoint, idParam = "/position/getPositionUsers", "positionId"
	case "authority":
		endpoint, idParam = "/authority/getUsersByAuthority", "authorityId"
	default:
		return nil, errors.New("dimension 仅支持 department|position|authority")
	}

	query := url.Values{}
	query.Set(idParam, strconv.FormatUint(uint64(targetID), 10))
	idsResp, err := getUpstream[[]uint](ctx, endpoint, query)
	if err != nil {
		return nil, fmt.Errorf("获取成员ID列表失败: %w", err)
	}
	memberIDs := idsResp.Data

	result := orgMemberResponse{
		Success:     true,
		Message:     fmt.Sprintf("共 %d 名成员", len(memberIDs)),
		Dimension:   dimension,
		TargetID:    targetID,
		MemberCount: len(memberIDs),
		MemberIDs:   memberIDs,
	}

	if withUserInfo && len(memberIDs) > 0 {
		found, unresolved, err := scanUsersByIDs(ctx, memberIDs)
		if err != nil {
			return nil, err
		}
		for _, id := range memberIDs {

View on GitHub (pinned to 3136500ef3)

Solutions

  1. Check the wrapped cause for status code and body
  2. Confirm the deptId/positionId exists before querying
  3. Verify the admin backend is running and the MCP server can reach it
  4. If decode errors appear, check whether the upstream API response schema changed
Defensive patterns

Strategy: retry

Validate before calling

if deptID == 0 && positionID == 0 {
    return errors.New("provide a valid deptId or positionId to query members")
}

Try / catch

members, err := query.Handle(ctx, args)
if err != nil {
    if isRetryable(err) { // network/5xx from wrapped cause
        time.Sleep(backoff)
        members, err = query.Handle(ctx, args)
    }
    if err != nil {
        return fmt.Errorf("member query failed: %w", err)
    }
}

Prevention

When it happens

Trigger: Handle queries members by deptId or positionId; getUpstream fails due to network error, 4xx/5xx response, or malformed payload that cannot be decoded into []uint.

Common situations: Backend down; wrong dept/position ID causing 4xx; auth token missing; API shape changed so JSON no longer decodes as an array of uints.

Related errors


AI-assisted analysis of flipped-aurora/gin-vue-admin@3136500ef3 (2026-08-31). Data as JSON: /api/errors/97c202d8b52e8104. Report an issue: GitHub.