package controller import ( "context" "rag-local/kb/model/dto" "rag-local/kb/service" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" ) type contract struct{} var Contract = &contract{} func (c *contract) Upload(ctx context.Context, req *dto.UploadContractReq) (*dto.UploadContractRes, error) { if req.File == nil { return nil, gerror.New("请选择合同文件") } id, err := service.AnnotationService.Upload(ctx, req.File, req.DatasetIds) if err != nil { return nil, err } return &dto.UploadContractRes{Id: id}, nil } func (c *contract) List(ctx context.Context, req *dto.ListContractTaskReq) (*dto.ListContractTaskRes, error) { list, total, err := service.AnnotationService.List(ctx, req.Page, req.PageSize) if err != nil { return nil, err } return &dto.ListContractTaskRes{ List: list, Total: total, Page: req.Page, PageSize: req.PageSize, }, nil } func (c *contract) Detail(ctx context.Context, req *dto.GetContractDetailReq) (*dto.GetContractDetailRes, error) { task, clauses, marks, risks, err := service.AnnotationService.Detail(ctx, req.Id) if err != nil { return nil, err } return &dto.GetContractDetailRes{Task: task, Clauses: clauses, Marks: marks, Risks: risks}, nil } func (c *contract) Summary(ctx context.Context, req *dto.SummaryContractReq) (*dto.SummaryContractRes, error) { task, sum, err := service.AnnotationService.Summary(ctx, req.Id) if err != nil { return nil, err } return &dto.SummaryContractRes{Task: task, RiskSummary: *sum}, nil } func (c *contract) Annotated(ctx context.Context, req *dto.AnnotatedContractReq) (*dto.AnnotatedContractRes, error) { htmlStr, err := service.AnnotationService.AnnotatedHTML(ctx, req.Id) if err != nil { return nil, err } // 直接写响应体(html),中间件检测到已写入则不包装 JSON r := g.RequestFromCtx(ctx) r.Response.Header().Set("Content-Type", "text/html; charset=utf-8") r.Response.Write(htmlStr) return &dto.AnnotatedContractRes{}, nil } func (c *contract) Delete(ctx context.Context, req *dto.DeleteContractReq) (*dto.DeleteContractRes, error) { if err := service.AnnotationService.Delete(ctx, req.Id); err != nil { return nil, err } return &dto.DeleteContractRes{}, nil }