package analytics import ( "net/http" "gitea.com/texpixel/document_ai/internal/model/analytics" "gitea.com/texpixel/document_ai/internal/service" "gitea.com/texpixel/document_ai/pkg/common" "gitea.com/texpixel/document_ai/pkg/log" "github.com/gin-gonic/gin" ) type AnalyticsHandler struct { analyticsService *service.AnalyticsService } func NewAnalyticsHandler() *AnalyticsHandler { return &AnalyticsHandler{ analyticsService: service.NewAnalyticsService(), } } // TrackEvent 记录单个事件 // @Summary 记录单个埋点事件 // @Description 记录用户行为埋点事件 // @Tags Analytics // @Accept json // @Produce json // @Param request body analytics.TrackEventRequest true "事件信息" // @Success 200 {object} common.Response // @Router /api/v1/analytics/track [post] func (h *AnalyticsHandler) TrackEvent(c *gin.Context) { var req analytics.TrackEventRequest if err := c.ShouldBindJSON(&req); err != nil { log.Error(c.Request.Context(), "bind request failed", "error", err) c.JSON(http.StatusOK, common.ErrorResponse(c, common.CodeParamError, "invalid request")) return } if err := h.analyticsService.TrackEvent(c.Request.Context(), &req); err != nil { log.Error(c.Request.Context(), "track event failed", "error", err) c.JSON(http.StatusOK, common.ErrorResponse(c, common.CodeSystemError, "failed to track event")) return } c.JSON(http.StatusOK, common.SuccessResponse(c, "success")) }