75 lines
2.2 KiB
Go
75 lines
2.2 KiB
Go
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
|
|
}
|