| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package plane_v1
- import (
- "fmt"
- "go.uber.org/zap"
- )
- // ==================== Work Item Relation API ====================
- // ListWorkItemRelations 列出工作项关系
- func ListWorkItemRelations(workItemID string) ([]byte, error) {
- path := fmt.Sprintf("/api/v1/workspaces/%s/projects/%s/work-items/%s/relations/", planeWorkspaceSlug, planeProjectId, workItemID)
- resp, err := planeHttpGet(path)
- if err != nil {
- zap.L().Error("[Plane] ListWorkItemRelations 请求失败", zap.Error(err))
- return nil, err
- }
- if !isSuccess(resp.StatusCode) {
- zap.L().Error("[Plane] ListWorkItemRelations 返回错误", zap.String("status", resp.Status))
- return nil, fmt.Errorf("ListWorkItemRelations 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
- // CreateWorkItemRelation 创建工作项关系
- // relationType: blocking / blocked_by / duplicate / relates_to / start_before / start_after / finish_before / finish_after
- func CreateWorkItemRelation(workItemID, relationType string, targetIDs []string) ([]byte, error) {
- path := fmt.Sprintf("/api/v1/workspaces/%s/projects/%s/work-items/%s/relations/", planeWorkspaceSlug, planeProjectId, workItemID)
- payload := map[string]interface{}{
- "relation_type": relationType,
- "issues": targetIDs,
- }
- resp, err := planeHttpPost(path, payload)
- if err != nil {
- zap.L().Error("[Plane] CreateWorkItemRelation 请求失败", zap.Error(err))
- return nil, err
- }
- if resp.StatusCode != 201 {
- zap.L().Error("[Plane] CreateWorkItemRelation 返回错误", zap.String("status", resp.Status), zap.String("body", string(resp.Body)))
- return nil, fmt.Errorf("CreateWorkItemRelation 失败: %s", resp.Status)
- }
- return resp.Body, nil
- }
|