New
This commit is contained in:
51
internal/handlers/task_handler.go
Normal file
51
internal/handlers/task_handler.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"gemini-balancer/internal/errors"
|
||||
"gemini-balancer/internal/response"
|
||||
"gemini-balancer/internal/task"
|
||||
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type TaskHandler struct {
|
||||
taskService *task.Task
|
||||
logger *logrus.Entry
|
||||
}
|
||||
|
||||
func NewTaskHandler(taskService *task.Task, logger *logrus.Logger) *TaskHandler {
|
||||
return &TaskHandler{
|
||||
taskService: taskService,
|
||||
logger: logger.WithField("component", "TaskHandler📦"),
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// GetTaskStatus
|
||||
// GET /admin/tasks/:id
|
||||
func (h *TaskHandler) GetTaskStatus(c *gin.Context) {
|
||||
taskID := c.Param("id")
|
||||
if taskID == "" {
|
||||
response.Error(c, errors.NewAPIError(errors.ErrBadRequest, "task ID is required"))
|
||||
return
|
||||
}
|
||||
|
||||
taskStatus, err := h.taskService.GetStatus(taskID)
|
||||
if err != nil {
|
||||
// TODO 可以根据 service 层返回的具体错误类型进行更精细的处理
|
||||
response.Error(c, errors.NewAPIError(errors.ErrResourceNotFound, err.Error()))
|
||||
return
|
||||
}
|
||||
// [探針] 在返回給前端前,打印從存儲中讀取並解析後的 status 對象
|
||||
loggerWithTaskID := h.logger.WithField("task_id", taskID)
|
||||
loggerWithTaskID.Debugf("Status read from store, ABOUT TO BE SENT to frontend: %+v", taskStatus)
|
||||
// [探針] 手動序列化並打印
|
||||
if h.logger.Logger.IsLevelEnabled(logrus.DebugLevel) {
|
||||
jsonData, _ := json.Marshal(taskStatus)
|
||||
loggerWithTaskID.Debugf("Manually marshalled JSON to be sent to frontend: %s", string(jsonData))
|
||||
}
|
||||
response.Success(c, taskStatus)
|
||||
}
|
||||
Reference in New Issue
Block a user