package plane_v2 // FeedbackPlaneService Feedback 专用的 Plane 服务(绑定固定的 workspace/project/labels) // 封装通用 PlaneService,调用方无需重复传入 workspace/project 参数 type FeedbackPlaneService struct { *PlaneService WorkspaceSlug string ProjectId string LabelBugId string LabelFeatureId string LabelFeedbackId string } // NewFeedbackPlaneService 创建 Feedback 专用 PlaneService(须先调用 InitPlaneClient) func NewFeedbackPlaneService(workspaceSlug, projectId, labelBugId, labelFeatureId, labelFeedbackId string) *FeedbackPlaneService { return &FeedbackPlaneService{ PlaneService: NewPlaneService(), WorkspaceSlug: workspaceSlug, ProjectId: projectId, LabelBugId: labelBugId, LabelFeatureId: labelFeatureId, LabelFeedbackId: labelFeedbackId, } } // ============ Intake 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) CreateIntakeIssue(issue IntakeIssueRequest) (*IntakeIssueResponse, error) { return f.PlaneService.CreateIntakeIssue(f.WorkspaceSlug, f.ProjectId, issue) } func (f *FeedbackPlaneService) ListIntakeIssues(status string) ([]byte, error) { return f.PlaneService.ListIntakeIssues(f.WorkspaceSlug, f.ProjectId, status) } func (f *FeedbackPlaneService) GetIntakeIssue(issueID string) ([]byte, error) { return f.PlaneService.GetIntakeIssue(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) UpdateIntakeIssue(issueID string, data map[string]any) ([]byte, error) { return f.PlaneService.UpdateIntakeIssue(f.WorkspaceSlug, f.ProjectId, issueID, data) } func (f *FeedbackPlaneService) AcceptIntakeIssue(issueID string) ([]byte, error) { return f.PlaneService.AcceptIntakeIssue(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) RejectIntakeIssue(issueID string) ([]byte, error) { return f.PlaneService.RejectIntakeIssue(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) DeleteIntakeIssue(issueID string) error { return f.PlaneService.DeleteIntakeIssue(f.WorkspaceSlug, f.ProjectId, issueID) } // ============ Asset 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) UploadProjectAsset(fileName, mimeType string, fileData []byte, entityType string) (*AssetUploadResult, error) { return f.PlaneService.UploadProjectAsset(f.WorkspaceSlug, f.ProjectId, fileName, mimeType, fileData, entityType) } func (f *FeedbackPlaneService) CreateProjectAsset(fileName, mimeType string, size int64, entityType string) (*AssetUploadResult, error) { return f.PlaneService.CreateProjectAsset(f.WorkspaceSlug, f.ProjectId, fileName, mimeType, size, entityType) } func (f *FeedbackPlaneService) ConfirmProjectAssetUpload(assetID string) error { return f.PlaneService.ConfirmProjectAssetUpload(f.WorkspaceSlug, f.ProjectId, assetID) } func (f *FeedbackPlaneService) GetProjectAssetURL(assetID string) (string, error) { return f.PlaneService.GetProjectAssetURL(f.WorkspaceSlug, f.ProjectId, assetID) } func (f *FeedbackPlaneService) GetProjectAsset(assetID string) ([]byte, error) { return f.PlaneService.GetProjectAsset(f.WorkspaceSlug, f.ProjectId, assetID) } func (f *FeedbackPlaneService) DeleteProjectAsset(assetID string) error { return f.PlaneService.DeleteProjectAsset(f.WorkspaceSlug, f.ProjectId, assetID) } func (f *FeedbackPlaneService) BindAssetsToEntity(entityID string, assetIDs []string) error { return f.PlaneService.BindAssetsToEntity(f.WorkspaceSlug, f.ProjectId, entityID, assetIDs) } // ============ Workspace 便捷方法(绑定 workspace)============ func (f *FeedbackPlaneService) GetWorkspace() ([]byte, error) { return f.PlaneService.GetWorkspace(f.WorkspaceSlug) } // ============ Project 便捷方法(绑定 workspace)============ func (f *FeedbackPlaneService) ListProjects() ([]byte, error) { return f.PlaneService.ListProjects(f.WorkspaceSlug) } func (f *FeedbackPlaneService) GetProject(projectID string) ([]byte, error) { return f.PlaneService.GetProject(f.WorkspaceSlug, projectID) } // ============ Issue 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListIssues() ([]byte, error) { return f.PlaneService.ListIssues(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetIssue(issueID string) ([]byte, error) { return f.PlaneService.GetIssue(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) GetSubIssues(issueID string) ([]byte, error) { return f.PlaneService.GetSubIssues(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) GetIssueActivity(issueID string) ([]byte, error) { return f.PlaneService.GetIssueActivity(f.WorkspaceSlug, f.ProjectId, issueID) } // ============ Cycle 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListCycles() ([]byte, error) { return f.PlaneService.ListCycles(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetCycle(cycleID string) ([]byte, error) { return f.PlaneService.GetCycle(f.WorkspaceSlug, f.ProjectId, cycleID) } func (f *FeedbackPlaneService) ListCycleIssues(cycleID string) ([]byte, error) { return f.PlaneService.ListCycleIssues(f.WorkspaceSlug, f.ProjectId, cycleID) } // ============ Module 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListModules() ([]byte, error) { return f.PlaneService.ListModules(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetModule(moduleID string) ([]byte, error) { return f.PlaneService.GetModule(f.WorkspaceSlug, f.ProjectId, moduleID) } func (f *FeedbackPlaneService) ListModuleIssues(moduleID string) ([]byte, error) { return f.PlaneService.ListModuleIssues(f.WorkspaceSlug, f.ProjectId, moduleID) } // ============ Label 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListLabels() ([]byte, error) { return f.PlaneService.ListLabels(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetLabel(labelID string) ([]byte, error) { return f.PlaneService.GetLabel(f.WorkspaceSlug, f.ProjectId, labelID) } // ============ State 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListStates() ([]byte, error) { return f.PlaneService.ListStates(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetState(stateID string) ([]byte, error) { return f.PlaneService.GetState(f.WorkspaceSlug, f.ProjectId, stateID) } // ============ Comment 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListComments(issueID string) ([]byte, error) { return f.PlaneService.ListComments(f.WorkspaceSlug, f.ProjectId, issueID) } func (f *FeedbackPlaneService) GetComment(issueID, commentID string) ([]byte, error) { return f.PlaneService.GetComment(f.WorkspaceSlug, f.ProjectId, issueID, commentID) } // ============ Link 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListIssueLinks(issueID string) ([]byte, error) { return f.PlaneService.ListIssueLinks(f.WorkspaceSlug, f.ProjectId, issueID) } // ============ Relation 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListIssueRelations(issueID string) ([]byte, error) { return f.PlaneService.ListIssueRelations(f.WorkspaceSlug, f.ProjectId, issueID) } // ============ Sticky 便捷方法(绑定 workspace)============ func (f *FeedbackPlaneService) ListStickies() ([]byte, error) { return f.PlaneService.ListStickies(f.WorkspaceSlug) } func (f *FeedbackPlaneService) GetSticky(stickyID string) ([]byte, error) { return f.PlaneService.GetSticky(f.WorkspaceSlug, stickyID) } // ============ Page 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListPages() ([]byte, error) { return f.PlaneService.ListPages(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetPage(pageID string) ([]byte, error) { return f.PlaneService.GetPage(f.WorkspaceSlug, f.ProjectId, pageID) } func (f *FeedbackPlaneService) GetPageDescription(pageID string) ([]byte, error) { return f.PlaneService.GetPageDescription(f.WorkspaceSlug, f.ProjectId, pageID) } // ============ Member 便捷方法(绑定 workspace/project)============ func (f *FeedbackPlaneService) ListWorkspaceMembers() ([]byte, error) { return f.PlaneService.ListWorkspaceMembers(f.WorkspaceSlug) } func (f *FeedbackPlaneService) GetWorkspaceMember(memberID string) ([]byte, error) { return f.PlaneService.GetWorkspaceMember(f.WorkspaceSlug, memberID) } func (f *FeedbackPlaneService) ListProjectMembers() ([]byte, error) { return f.PlaneService.ListProjectMembers(f.WorkspaceSlug, f.ProjectId) } func (f *FeedbackPlaneService) GetProjectMember(memberID string) ([]byte, error) { return f.PlaneService.GetProjectMember(f.WorkspaceSlug, f.ProjectId, memberID) }