From f6aab2bc868892d982f928884fdee0e5a70fc4bc Mon Sep 17 00:00:00 2001 From: wizardchen Date: Wed, 7 Jan 2026 21:05:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=92=8C=E6=9B=B4=E6=96=B0=E6=9C=80=E6=96=B0FAQ=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E7=BB=93=E6=9E=9C=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/faq.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/client/faq.go b/client/faq.go index bd17434b6..afe108dea 100644 --- a/client/faq.go +++ b/client/faq.go @@ -400,3 +400,69 @@ func (c *Client) GetFAQImportProgress(ctx context.Context, taskID string) (*FAQI } return response.Data, nil } + +// FAQImportResult stores statistics of the last FAQ import. +// It matches server response from GET /knowledge-bases/{id}/faq/import/last-result. +type FAQImportResult struct { + TotalEntries int `json:"total_entries"` + SuccessCount int `json:"success_count"` + FailedCount int `json:"failed_count"` + SkippedCount int `json:"skipped_count"` + + ImportMode string `json:"import_mode"` + ImportedAt time.Time `json:"imported_at"` + TaskID string `json:"task_id"` + + FailedEntriesURL string `json:"failed_entries_url,omitempty"` + + DisplayStatus string `json:"display_status"` + ProcessingTime int64 `json:"processing_time"` +} + +type faqImportResultResponse struct { + Success bool `json:"success"` + Data *FAQImportResult `json:"data"` + Message string `json:"message,omitempty"` + Code string `json:"code,omitempty"` +} + +type updateLastFAQImportResultDisplayStatusRequest struct { + DisplayStatus string `json:"display_status"` +} + +// GetLastFAQImportResult retrieves the last FAQ import result summary for a knowledge base. +func (c *Client) GetLastFAQImportResult(ctx context.Context, knowledgeBaseID string) (*FAQImportResult, error) { + path := fmt.Sprintf("/api/v1/knowledge-bases/%s/faq/import/last-result", knowledgeBaseID) + resp, err := c.doRequest(ctx, http.MethodGet, path, nil, nil) + if err != nil { + return nil, err + } + + var response faqImportResultResponse + if err := parseResponse(resp, &response); err != nil { + return nil, err + } + return response.Data, nil +} + +// UpdateLastFAQImportResultDisplayStatus updates the display status (open/close) of the last FAQ import result. +func (c *Client) UpdateLastFAQImportResultDisplayStatus(ctx context.Context, knowledgeBaseID string, displayStatus string) error { + path := fmt.Sprintf("/api/v1/knowledge-bases/%s/faq/import/last-result/display", knowledgeBaseID) + resp, err := c.doRequest(ctx, http.MethodPut, path, &updateLastFAQImportResultDisplayStatusRequest{DisplayStatus: displayStatus}, nil) + if err != nil { + return err + } + + var response faqSimpleResponse + return parseResponse(resp, &response) +} + +// GetFAQImportResult is kept for backward compatibility; it now calls GetLastFAQImportResult. +func (c *Client) GetFAQImportResult(ctx context.Context, knowledgeBaseID string) (*FAQImportResult, error) { + return c.GetLastFAQImportResult(ctx, knowledgeBaseID) +} + +// UpdateFAQImportResultDisplayStatus is kept for backward compatibility; it now calls UpdateLastFAQImportResultDisplayStatus. +func (c *Client) UpdateFAQImportResultDisplayStatus(ctx context.Context, knowledgeBaseID string, displayStatus string) error { + return c.UpdateLastFAQImportResultDisplayStatus(ctx, knowledgeBaseID, displayStatus) +}