package service import ( "context" "errors" "strings" "gitea.com/bitwsd/core/common/log" "gitea.com/bitwsd/document_ai/internal/model/task" "gitea.com/bitwsd/document_ai/internal/storage/dao" "gorm.io/gorm" ) type TaskService struct { db *gorm.DB } func NewTaskService() *TaskService { return &TaskService{dao.DB} } func (svc *TaskService) EvaluateTask(ctx context.Context, req *task.EvaluateTaskRequest) error { taskDao := dao.NewRecognitionTaskDao() task, err := taskDao.GetByTaskNo(svc.db.WithContext(ctx), req.TaskNo) if err != nil { log.Error(ctx, "func", "EvaluateTask", "msg", "get task by task no failed", "error", err) return err } if task == nil { log.Error(ctx, "func", "EvaluateTask", "msg", "task not found") return errors.New("task not found") } if task.Status != dao.TaskStatusCompleted { log.Error(ctx, "func", "EvaluateTask", "msg", "task not finished") return errors.New("task not finished") } evaluateTaskDao := dao.NewEvaluateTaskDao() evaluateTask := &dao.EvaluateTask{ TaskID: task.ID, Satisfied: req.Satisfied, Feedback: req.Feedback, Comment: strings.Join(req.Suggestion, ","), } err = evaluateTaskDao.Create(svc.db.WithContext(ctx), evaluateTask) if err != nil { log.Error(ctx, "func", "EvaluateTask", "msg", "create evaluate task failed", "error", err) return err } return nil } func (svc *TaskService) GetTaskList(ctx context.Context, req *task.TaskListRequest) (*task.TaskListResponse, error) { taskDao := dao.NewRecognitionTaskDao() tasks, err := taskDao.GetTaskList(svc.db.WithContext(ctx), dao.TaskType(req.TaskType), req.Page, req.PageSize) if err != nil { log.Error(ctx, "func", "GetTaskList", "msg", "get task list failed", "error", err) return nil, err } resp := &task.TaskListResponse{ TaskList: make([]*task.TaskListDTO, 0, len(tasks)), HasMore: false, NextPage: 0, } for _, item := range tasks { resp.TaskList = append(resp.TaskList, &task.TaskListDTO{ TaskID: item.TaskUUID, FileName: item.FileName, Status: item.Status.String(), Path: item.FileURL, TaskType: item.TaskType.String(), CreatedAt: item.CreatedAt.Format("2006-01-02 15:04:05"), }) } return resp, nil }