Files
gen2d/backend/internal/handler/prompt.go
T
wonder 25c11ed649 refactor: 全面集成 slog 日志到 handler、service、middleware
- cmd/main.go: 集成 logger.Init 和日志中间件,替换标准 log 包
- handler 层: 5xx 错误记录完整日志,返回通用消息(防内部信息泄露)
- service 层: LLM/图片生成/存储/认证等关键操作补充结构化日志
- auth 中间件: 记录认证失败原因
- generate.go: 后台管线任务使用带 task_id 的 logger
2026-05-25 14:31:04 +08:00

45 lines
1.3 KiB
Go

package handler
import (
"net/http"
"gen2d/internal/logger"
"gen2d/internal/model"
"gen2d/internal/service"
"github.com/gin-gonic/gin"
)
// PromptOptimizeRequest 提示词优化请求。
type PromptOptimizeRequest struct {
Tags []string `json:"tags" binding:"required,min=1"` // 用户选择的标签
AssetType string `json:"assetType" binding:"required"` // 素材类型
Prompt string `json:"prompt"` // 用户原始提示词
UserNote string `json:"userNote"` // 用户额外描述
}
// PromptOptimize 提示词优化接口,接收用户标签并调用 LLM 生成规范提示词。
func PromptOptimize(c *gin.Context) {
var req PromptOptimizeRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, model.Fail(http.StatusBadRequest, "参数错误: "+err.Error()))
return
}
in := service.PromptAgentInput{
Tags: req.Tags,
AssetType: req.AssetType,
Prompt: req.Prompt,
UserNote: req.UserNote,
}
output, err := service.RunPromptAgent(c.Request.Context(), in)
if err != nil {
logger.FromCtx(c.Request.Context()).Error("提示词优化失败", "error", err)
c.JSON(http.StatusInternalServerError, model.Fail(http.StatusInternalServerError, "提示词优化失败"))
return
}
c.JSON(http.StatusOK, model.OK(output))
}