重构了一下 rag的方法, 使用 goframe的框架, 还有redis连接部分

This commit is contained in:
Cold
2025-12-06 18:04:29 +08:00
committed by 张斌
parent f7cb007491
commit 4b2b5e6177
16 changed files with 398 additions and 260 deletions

View File

@@ -2,8 +2,9 @@ package ragflow
import (
"context"
"fmt"
"strings"
"github.com/gogf/gf/v2/errors/gerror"
)
// 数据集内文件管理
@@ -70,7 +71,7 @@ type DeleteDocumentsReq struct {
// ListDocuments 列出文档
func (c *Client) ListDocuments(ctx context.Context, datasetId string, req *ListDocumentsReq) (*ListDocumentsRes, error) {
path := fmt.Sprintf("/api/v1/datasets/%s/documents", datasetId)
path := "/api/v1/datasets/" + datasetId + "/documents"
params := map[string]interface{}{}
if req.Page > 0 {
params["page"] = req.Page
@@ -111,16 +112,14 @@ func (c *Client) ListDocuments(ctx context.Context, datasetId string, req *ListD
// 处理数组参数suffix文件后缀过滤
// API 要求多个值时重复参数名suffix=pdf&suffix=txt
// 这里使用 fmt.Sprintf 来构造每个参数值
for _, suffix := range req.Suffix {
queryParts = append(queryParts, fmt.Sprintf("suffix=%s", suffix))
queryParts = append(queryParts, "suffix="+suffix)
}
// 处理数组参数run处理状态过滤
// 支持数字格式("0"-"4")或文本格式("UNSTART", "RUNNING", "CANCEL", "DONE", "FAIL"
// 这里使用 fmt.Sprintf 来构造每个参数值
for _, run := range req.Run {
queryParts = append(queryParts, fmt.Sprintf("run=%s", run))
queryParts = append(queryParts, "run="+run)
}
// 构造最终请求路径
@@ -134,7 +133,7 @@ func (c *Client) ListDocuments(ctx context.Context, datasetId string, req *ListD
return nil, err
}
if res.Code != 0 {
return nil, fmt.Errorf("list documents failed: code=%d", res.Code)
return nil, gerror.Newf("list documents failed: code=%d", res.Code)
}
return &res, nil
}
@@ -142,23 +141,21 @@ func (c *Client) ListDocuments(ctx context.Context, datasetId string, req *ListD
// UploadDocument 上传文档
// 注意:此方法需要特殊处理 multipart/form-data目前的 request 方法可能不支持
// 我们需要扩展 request 方法或在此处单独实现
func (c *Client) UploadDocument(ctx context.Context, datasetId string, filePaths []string) error {
func (c *Client) UploadDocument(ctx context.Context, datasetId string, filePaths []string) (err error) {
// TODO: 实现文件上传逻辑,需要使用 gclient 的 UploadFile 功能
// 由于 request 方法封装了 JSON 处理,这里可能需要绕过 request 方法直接使用 c.Client
// 暂时留空或仅做简单提示,待完善 Client 封装以支持文件上传
return fmt.Errorf("upload document not implemented yet")
return gerror.New("upload document not implemented yet")
}
// DeleteDocument 删除文档
func (c *Client) DeleteDocument(ctx context.Context, datasetId string, ids []string) error {
func (c *Client) DeleteDocument(ctx context.Context, datasetId string, ids []string) (err error) {
req := DeleteDocumentsReq{Ids: ids}
var res CommonResponse
path := fmt.Sprintf("/api/v1/datasets/%s/documents", datasetId)
if err := c.request(ctx, "DELETE", path, req, &res); err != nil {
return err
path := "/api/v1/datasets/" + datasetId + "/documents"
if err = c.request(ctx, "DELETE", path, req, &res); err != nil {
return
}
if !res.IsSuccess() {
return fmt.Errorf("delete document failed: %s", res.Message)
return gerror.Newf("delete document failed: %s", res.Message)
}
return nil
return
}